zoukankan      html  css  js  c++  java
  • iOS:不同属性声明方式的解析

    代码:

    /*
    
    属性声明方式说明:
     
    ----------------------- 1
    @interface ...
    {
        id name
    }
    @end
     
    这样声明的属性其实可以认为是private属性,因为它只能在方法里通过name引用,外部无法通过“object.name”的方式进行引用 (内部也不能通过self引用)
    
    ----------------------  2
    
    @interface ...
    @property id name
    @end
    
    这样声明的属性可以认为是public属性,内部通过“self.name”引用;外部通过“object.name”引用
     
    ----------------------- 3
    @implementation ...
    @synthesize name
    @end
     
    允许以property声明的属性,在内部方法里除了以self引用外,还可以用属性名直接引用
     
    ----------------------- 4
    
    self.name
    其实是是两个方法(setter,getter):
    
    id value = [self name]
    [self setName = ...]
     
    ----------------------- 5
    
    总结:
    如果框架依赖的属性是@property,就不能实现为私有,否则程序可以崩掉
     
    */
    
    #import <Foundation/Foundation.h>
    
    @interface Student : NSObject
    {
        NSString *name;
    }
    
    @property NSString *address;
    
    -(void) toString;
    
    @end
    
    @implementation Student
    
    @synthesize address;
    
    -(Student *)init
    {
        name = @"lishujun";
        self.address = @"beijing";
        return self;
    }
    
    -(void) toString
    {
        NSLog(@"%@ %@", name, [self address]);
    }
    
    @end
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            
            // insert code here...
            Student *student = [[Student alloc]init];
            [student toString];
            [student setAddress:@"tongzhou"];
            [student toString];
            NSLog(@"%@", student.address);
            
            // 语法错误,没有setName这个方法
            //[student setName:@"shujunli"];
            //[student toString];
            
        }
        return 0;
    }
  • 相关阅读:
    jsp文件中charset和pageEncoding的区别
    如果jsp表单元素的值为空,如何避免null出现在页面上?
    C# 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
    正则表达式
    事件委托与键盘事件
    事件对象的兼容性
    作用域解析题
    事件冒泡与事件铺获的解析
    浏览器内核
    js中级总结
  • 原文地址:https://www.cnblogs.com/code-style/p/3955031.html
Copyright © 2011-2022 走看看