zoukankan      html  css  js  c++  java
  • ios内存管理笔记(二)

    1)实现部分:

    复制代码
    1. @synthesize window=_window;
    2. @synthesize viewController=_viewController;


    通常看到的都没有包含=部分,@synthesize window=_window; 怎么理解?这里的 _window 和 _viewController 是什么变量?
    2).h 文件中在类中没有定义 window 和 viewController 实例变量,怎么能进行 @perproty 声明呢?

    复制代码
    1. // .h
    2. #import <UIKit/UIKit.h> 
    3. @class HelloWorldMailViewController;
    4. @interface HelloWorldMailAppDelegate : NSObject <UIApplicationDelegate> {
    5. @property (nonatomic, retain) IBOutlet UIWindow *window;
    6. @property (nonatomic, retain) IBOutlet HelloWorldMailViewController *viewController; 
    7. @end



    复制代码
    1. // .m
    2. // ...
    3. @implementation HelloWorldMailAppDelegate 
    4. @synthesize window=_window;
    5. @synthesize viewController=_viewController; 
    6. // ... 
    7. @end


    答案:
    在 32-bit 时,如果类的 @interface 部分没有进行 ivar 声明,但有 @property 声明,在类的 @implementation 部分有响应的 @synthesize,则会得到类似下面的编译错误:
    Synthesized property 'xX' must either be named the same as a compatible ivar or must explicitly name an ivar
    在 64-bit时,运行时系统会自动给类添加 ivar,添加的 ivar 以一个下划线"_"做前缀。
    上面声明部分的 @synthesize window=_window; 意思是说,window 属性为 _window 实例变量合成访问器方法。

    有兴趣的可以仔细看这里:http://www.cocoabuilder.com/archive/cocoa/198573-property-problem.html

    @synthesize window=_window; 意思是说,window 属性为 _window 实例变量合成访问器方法。
    也就是说,window属性生成存取方法是setWindow,这个setWindow方法就是_window变量的存取方法,它操作的就是_window这个变量。
    下面是一个常见的例子
    @interface MyClass:NSObject{
      MyObjecct *_myObject;
    }
    @property(nonamtic, retain) MyObjecct *myObject;
    @end

    @implementatin MyClass
    @synthesize myObject=_myObject;
    这 个类中声明了一个变量_myObject,又声明了一个属性叫myObject,然后用@synthesize生成了属性myObject的存取方法,这 个存取方法的名字应该是:setmyObject和getmyObject。@synthesize myObject=_myObject的含义就是属性myObject的存取方法是做用于_myObject这个变量的。
    这种用法在Apple的Sample Code中很常见,

  • 相关阅读:
    CAP
    plugins for ST3 to frontend
    OAuth 2.0 详解
    Git SSH生成
    Android FrameWork 学习之Android 系统源码调试
    node.js安装步骤
    数据结构-- 队列 循环与顺序
    jsp之认识 servlet (基础、工作原理、容器请求处理)
    android 蓝牙开发---与蓝牙模块进行通讯 基于eclipse项目
    Android 仿微信调用第三方应用导航(百度,高德、腾讯)
  • 原文地址:https://www.cnblogs.com/lisa090818/p/3214420.html
Copyright © 2011-2022 走看看