黑马程序员技术交流社区
标题: OC笔记核心语法 [打印本页]
作者: 楚燮哥哥 时间: 2014-12-9 10:02
标题: OC笔记核心语法
一、 点语法
通过点语法可以快速的存取数据,例如有一个Person类
@implementation Person
- (void)setAge:(int)age
{
_age = age;
}
- (int)age
{
return _age;
}
@end
Person *p = [Person new];
p.age = 10; // 该语句在编译的时候会被替换为[p setAge:10];
NSLog(@"age=%d",p.age); // p.age在编译的时候会被替换为[p age];
点语法里,有赋值的为setter,没有的为getter
二、 成员变量作用域
@public : 在任何地方都能直接访问对象的成员变量
@private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private)
@protected : 可以在当前类及其子类的对象方法中直接访问 (@interface中默认就是@protected)
@package : 只要处在同一个框架中,就能直接访问对象的成员变量
@interface和@implementation中不能声明同名的成员变量
作用域代码如下:
@public // 在任何地方都能直接访问对象的成员变量
int _age;
@private // 只能在当前类的对象方法中直接访问
int _height;
@protected // 能在当前类和子类的对象方法中直接访问
int _weight;
三、 @property的使用
@property会在编译的时候自动为成员变量生成setter和getter的声明和实现方法
例如
@property int age;
@synthesize会在编译的时候为成员变量自动生成setter和getter的实现方法,如果没有定义该成员变量,则会自动生成@private类型的变量
例如
@synthesize age = _age;
四、 id类型
id为Object-C对象的通用类型,也就是说可以用id来指向何对象
例如:
id p = [Personnew];
id定义在运行期数据库的头文件里面
typedef structobje_object{
Class isa;
} *id
由于id在定义时就已经是指针类型,所以指向对象时不用加“*”。
作者: King灬love 时间: 2014-12-9 10:07
楼主技术分怎么破
作者: 楚燮哥哥 时间: 2014-12-9 10:10
差不多用了20多天吧,水完这最后一贴,我的技术分也就够了,另外得感谢船长打赏得2个技术分:lol
作者: young_star 时间: 2014-12-10 10:43
有没有wins上编译OC的软件?
作者: young_star 时间: 2014-12-10 10:53
有没有wins上的oc编译软件
作者: 。烊了 时间: 2014-12-10 10:55
我的技术分怎么办
作者: pingfan183 时间: 2014-12-10 11:17
oc有没有私有方法?
作者: 楚燮哥哥 时间: 2014-12-10 13:47
有的,@private
作者: 任冰冰 时间: 2014-12-12 02:01
你的blog的多少分呀
作者: 。烊了 时间: 2014-12-12 09:34
求例子,@private表示的是私有变量。。。。。私有方法怎么表示,
作者: 。烊了 时间: 2014-12-12 09:35
19.。。。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |