Objective-C( 语法一)
点语法
点语法的本质是方法调用
成员变量的作用域
@public : 在任何地方都能直接访问对象的成员变量
@private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private)
子类如果想访问通过setter getter方法访问
@protected : 可以在当前类及其子类的对象方法中直接访问
(@interface中默认是@protected)
@package : 只要处在同一个框架中,就能直接访问对象的成员变量
一般用不到,直接用系统自带框架
@interface和@implementation中不能声明同名的成员变量
在@implementation中也能写成员变量,不用声明,可直接写set get方法
@implementation Class : NSObject
{
int _a;// 默认是私有
}
- (void)setA:(int)a
{
_a = a;
}
-(int)a
{
return _a;
}
@end
@property 可以自动生成某个成员变量的setter和getter的声明
例
@interface Class : NSObject
{
int _a;
double _b;
}
@property int a;
@property double b;
@end
@synthesize:自动生成a的setter和getter的实现并且访问_a这个成员变量
会访问_a这个成员变量,如果这个成员变量不存在,就自动生成@private类型的_a变量
例
@implementation Class
@synthesize a = _a;
@synthesize b = _b;
@end
Xcode 4.4版本后,@property就独揽了@synthesize功能,就是说@property可以同时声成setter和getter的声明和实现
默认情况下 setter 和getter方法的实现,会访问下划线_开头的成员变量
id类型
id:万能指针,能指向/操作任何OC对象 id ==NSObject *
注意id后面不要加*
构造方法:用来初始化对象的方法,是个对象方法
重写构造方法目的:让创建出来的对象里的成员变量有一些固定的值
重写init方法:
// 1.一定要调用super的init方法:初始化父类中声明的一些成员变量和其他属性
例 - (id)init
{
self = [super init]; // 当前对象 self
// 2.如果对象初始化成功,才有必要进行接下来的初始化
if (self != nil)
{
_age = 10;
}
return self;
}
在@implementaion 类名
- (id)init
{
if (self = [super init])
{
_age = 10;
}
return self
}
@end中重写
自定义构造方法:
规范:
1.一定是对象方法,一定以 _ 开头
2.返回值id类型
3.方法名以initWith开头
1.声明在@interface 中 @end上面
例 @interface Person :NSObject
@property NSString *_name;
- (id)initWithName:(NSString *)name;
@end
2.实现在@implementation 中 @end 上面
例 @implementation Person
- (id)initWithName:(NSString *)name
{
if (self = [super init])
{
_name = name;
}
return self;
}
@end
main.m文件中:
int main()
{
Person *p = [[Person alloc] initWithName:@"rose"]
return 0;
}
Objective-C( 语法一)的更多相关文章
- 初学Objective - C语法之代码块(block)
一.block声明 1.无参数,无返回值: void (^sayHi)(); 2.有参数,有返回值: NSInteger (^operateOfValue)(NSInteger num); block ...
- [转] 从 C 到 Objective C 入门1
转自: http://blog.liuhongwei.cn/iphone/objective-c/ 进军iPhone开发,最大的难点之一就是怪异的Objective C语法了.不过,了解之后才发现,原 ...
- iOS开发——语法篇OC篇&高级语法精讲二
Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和 ...
- Windows下编译objective-C
Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode 目录 ...
- ios学习笔记之2天来总结
学了2天,小结下. ios的基本代码执行流程: 与java的基本异同: 异: 1.基类:java中Object是所有类的父类,而objective-c的根类为NSObject 2.默认访问类型:jav ...
- Pentaho BI server 中 CCC table Component 的使用小技巧
我使用的版本 Pentaho BI Server 5.3.0.0.213 CDE/CDF/CDA/CCC 15.04.16 stable Q: 如何设置表格中各种提示文字的语言(默认为英语)? C ...
- OC中protocol、category和继承的关系--转
开放封闭原则(OCP)就是,“对扩展开放,对更改封闭”.是所有面向对象设计的一个核心宗旨.感兴趣的可以看百度百科的一些解释:http://baike.baidu.com/view/2493421.ht ...
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- Objective - C中属性和点语法的使用
一.属性 属性是Objective—C 2.0定义的语法,为实例变量提供了setter.getter方法的默认实现能在一定程度上简化程序代码,并且增强实例变量的访问安全性 ...
- iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法
本分享是面向有意向从事iOS开发的伙伴们.或者已经从事了iOS的开发人员.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础,建议您先翻阅我之前分享的iOS ...
随机推荐
- Codeforces Round #243 (Div. 2) B(思维模拟题)
http://codeforces.com/contest/426/problem/B B. Sereja and Mirroring time limit per test 1 second mem ...
- 《Redis设计与实现》读书笔记
<Redis设计与实现>读书笔记 很喜欢这本书的创作过程,以开源的方式,托管到Git上进行创作: 作者通读了Redis源码,并分享了详细的带注释的源码,让学习Redis的朋友轻松不少: 阅 ...
- CSS笔记(二)CSS属性选择器
对带有指定属性的HTML元素设置样式. 参考: http://www.w3school.com.cn/css/css_syntax_attribute_selector.asp 选择器 描述 [att ...
- this call和apply
this指针总是指向一个对象,大致可以分为以下四种: 1,作为对象的方法调用(this指向该对象) 2,作为普通函数调用 当函数不作为对象的属性被调用时,也就是普通函数方式,此时的this总是指向全局 ...
- DOM 操作XML(CRUD)
<?xml version="1.0" encoding="UTF-8" standalone="no"?><书架> ...
- 解耦HTML、CSS和JavaScript
当前在互联网上,任何一个稍微复杂的网站或者应用程序都会包含许多HTML.CSS和JavaScript.随着互联网运用的发展以及我们对它的依赖性日益增加,设定一个关于组织和维护你的前端代码的计划是绝对需 ...
- iOS - UIButton
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIButton : UIControl <NSCoding> @available(iOS 2.0, ...
- html textarea 获取换行
1.需求: 获取textarea中的换行符,存到数据库中,并在取出时显示出换行操作 2.实践 2.1 发现可以取到换行符 "/n" ,并且可以存储到MySQL数据库中,并不需要特殊 ...
- POJ2676,HDU4069解决数独的两种实现:DFS、DLX
搜索实现:解决数独有两种思考策略,一种是枚举当前格能填的数字的种数,这里有一优化策略就是先搜索能填入种数小的格子:另一种是考虑处理某一行(列.宫)时,对于某一个没用过的数字,若该行(列.宫)只有一个可 ...
- 基于Linux的oracle数据库管理 part6 (backup 相关的脚本)
这里只是简单的介绍几种 备份方法 备份: 逻辑备份, 冷备份, 热备份 逻辑备份 也称作 导入(import), 导出(export), 作用是在不同的oracle数据库之间转移数据 物理备份, 就是 ...