黑马程序员技术交流社区

标题: 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
King灬love 发表于 2014-12-9 10:07
楼主技术分怎么破

差不多用了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
pingfan183 发表于 2014-12-10 11:17
oc有没有私有方法?

有的,@private
作者: 任冰冰    时间: 2014-12-12 02:01
。烊了 发表于 2014-12-10 10:55
我的技术分怎么办

你的blog的多少分呀
作者: 。烊了    时间: 2014-12-12 09:34
楚燮哥哥 发表于 2014-12-10 13:47
有的,@private

求例子,@private表示的是私有变量。。。。。私有方法怎么表示,
作者: 。烊了    时间: 2014-12-12 09:35
任冰冰 发表于 2014-12-12 02:01
你的blog的多少分呀

19.。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2