首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏ShaoYL

    Objective-C中的@property和@synthesize用法

    @代表“Objective-C”的标志,证明您正在使用Objective-C语言 Objective-C语言关键词,@property与@synthesize配对使用。 count;   等效于在头文件中声明2个方法: C代码   - (int)count;   -(void)setCount:(int)newCount;   2、实现文件(.m)中 C代码   @synthesize 所以如果不是多线程的程序,打上(nonatomic)即可 retain 代码说明 如果只是@property NSString*str; 则通过@synthesize自动生成的setter代码为: C代码

    1.9K110发布于 2018-05-11
  • 来自专栏Elton的技术分享博客

    iPhoneMac Objective-C内存管理教程和原理剖析(三)@property (retain)和@synthesize的默认实现

    三 @property (retain)和@synthesize的默认实现 在这里解释一下@property (retain) ClassB* objB;和@synthesize objB;背后到底发生了什么

    41820发布于 2021-01-26
  • 来自专栏全栈程序员必看

    假设将synthesize省略,语义特性声明为assign retain copy时,自己实现setter和getter方法

    假设将synthesize省略,而且我们自己实现setter和getter方法时,系统就不会生成相应的setter和getter方法,还有实例变量 1,当把语义特性声明为assign时,setter

    31510编辑于 2022-07-08
  • 来自专栏陈满iOS

    iOS基础·属性的修饰词与setter的关系

    3.1 @synthesize 与 @dynamic 3.1.1 位置 @dynamic或者@synthesize,写在.m文件的@implementation中。 synthesize 与 dynamic 英文意思 synthesize ['sɪnθəsaɪz] v. 合成;综合 dynamic [daɪ'næmɪk] adj. synthesize 与 synchronized 单词比较 synthesize ['sɪnθəsaɪz] v. 3.2.2 用法 多个属性可以通过一行@synthesize搞定,多个属性之间用逗号连接 可以在类的实现代码里通过@synthesize语法来指定实例变量的名字。 age @synthesize age;//等效下面 @synthesize age = age; setter和getter实现中会访问@synthesize后同名成员变量age 如果成员变量age不存在

    1.4K20发布于 2018-09-10
  • 来自专栏程序员充电站(itcharge)

    OC知识--成员变量(属性,实例变量)的相关知识

    @synthesize相关 1. 什么是@synthesize @synthesize是实现属性方法的语法 @synthesize用在实现文件中告诉编译器实现成员变量的的访问器(getter/setter)方法 使用@synthesize @synthesize基本使用 写在@implementation中,用来自动生成setter和getter的实现 用@synthesize size; 就可以代替 - (int)size{ } 编写步骤 在@implementation和@end之间写上@synthesize 在@synthesize后面写上和@property中一样的属性名称,这样@synthesize就会将@property 多个属性可以通过一行@synthesize搞定,多个属性之间用逗号连接 @synthesize age = _age, number = _number, name = _name; 7.

    3.1K60发布于 2018-05-31
  • 来自专栏青玉伏案

    Objective-C中的属性机制

    //定义属性 @property NSString *name; @property int idNumber; //定义其他方法 @end   2.属性的实现  在实现文件中我们用@synthesize 来实现,用@synthesize来修饰相应的变量就起到类getter 和 setter 的方法实现的作用。 用@synthesize也可以给函数改名用@synthesize name = otherName; 就可以给方法改名。              demo如下 @implementation Student @synthesize name, idNumber; //其他方法的实现 @end ​3.定义后属性的使用     ​    ​ 线程安全的;     ​    ​    ​    ​nonatomic: 线程不安全的;   我们可以简写属性,直接在接口文件中吧{}省略掉,直接用@property来定义方法,省去实现文件中的@synthesize

    1.8K70发布于 2018-01-12
  • 来自专栏呱牛笔记

    重回iOS应用开发

    SportProtocol.h" @interface Person : NSObject<SportProtocol> @end #import "Person.h" @implementation Person @synthesize sportType=_sportType; - (void)readSportType{    NSLog(@"%@",_sportType); } @end 上面方法中主要用到了@synthesize @synthesize 的作用:是为属性添加一个实例变量名,或者说别名。同时会为该属性生成 setter/getter 方法。 2.禁止@synthesize:如果某属性已经在某处实现了自己的 setter/getter ,可以使用 @dynamic 来阻止 @synthesize 自动生成新的 setter/getter 覆盖 3.内存管理:@synthesize 和 ARC 无关。 4.使用:一般情况下无需对属性添加 @synthesize ,但一些特殊情形仍然需要,例如protocol中声明的属性。

    83520编辑于 2023-05-02
  • 来自专栏韩曙亮的移动开发专栏

    【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态

    如 @property int age; 实现部分使用 @synthesize 声明, 如 @synthesize age; -- 生成成员变量 : 使用 @property 和 @synthesize * name; @synthesize name = _name; -- 上面的代码作用 : 使用 @property 合成的存取方法对应的是 _name, 不是 name;  -- @synthesize 语法 : @synthesize propertyName [= fileName]; -- 默认成员变量 : @synthesize  不指定 filedName 时, 成员变量默认为属性名添加下划线 name = _name; @synthesize describe = _describe; @synthesize age = _age; @end int main(int argc, char name; @synthesize age; @synthesize address; @synthesize hobby; - (id) init { if(self = [super init

    1.3K10编辑于 2023-03-27
  • 来自专栏c#开发者

    ios5开发-UITableView开启编辑功能

    该例子添加UITableView编辑功能 具体功能如下 功能很简单但很实用  @implementation AppDelegate @synthesize window = _window; @synthesize  viewController = _viewController; @synthesize navigationController=_navigationController; @synthesize

    96370发布于 2018-04-12
  • 来自专栏mukekeheart的iOS之旅

    iOS学习——属性引用self.xx与_xx的区别

    1 @property 与 @synthesize   在说self.xx与_xx之前,我们先了解一下@property 以及 @synthesize之间的区别和联系,说到@property 以及 @synthesize 看老代码时,经常看到一个大括号里面定义了成员变量,同时用了@property声明,而且还在@implementation中使用@synthesize方法,就像下面的代码这样: @interface ViewController nonatomic, copy) NSString *myString; @end @implementation ViewController //3.最后在@implementation中用synthesize 生成set方法 @synthesize myString; @end 其实,发生这种状况根本原因是苹果将默认编译器从GCC转换为LLVM(low level virtual machine),才不再需要为属性声明实例变量了 在没有更改之前,属性的正常写法需要 成员变量 + @property + @synthesize 成员变量 三个步骤。 

    1.3K161发布于 2018-03-01
  • 来自专栏iOS开发干货分享

    你真的能写好一个单例么?

    #if __has_feature(objc_arc) #undef AL_SYNTHESIZE_WEAK_SINGLETON #define AL_SYNTHESIZE_WEAK_SINGLETON (CLS); #define AL_SYNTHESIZE_SINGLETON(CLS) \ static CLS *__AL_SINGLETON_INSTANCE_FOR_CLASS(CLS) = nil; \ __AL_SYNTHESIZE_SINGLETON_ARC( CLS); #else #define AL_SYNTHESIZE_SINGLETON(CLS) \ static CLS * #define __AL_SYNTHESIZE_SINGLETON_MRC(cls) \ __AL_SYNTHESIZE_SINGLETON_COMMON(cls);

    47610发布于 2019-06-14
  • 来自专栏iOS开发干货分享

    你真的能写好一个单例么?

    #if __has_feature(objc_arc)#undef AL_SYNTHESIZE_WEAK_SINGLETON#define AL_SYNTHESIZE_WEAK_SINGLETON(CLS (CLS) = nil; \ __AL_SYNTHESIZE_SINGLETON_ARC(CLS);#else#define AL_SYNTHESIZE_SINGLETON(CLS #define __AL_SYNTHESIZE_SINGLETON_ARC(cls) \__ AL_SYNTHESIZE_SINGLETON_COMMON(cls); \+ (void) #define __AL_SYNTHESIZE_SINGLETON_MRC(cls) \__AL_SYNTHESIZE_SINGLETON_COMMON(cls);

    1.1K00发布于 2019-05-10
  • 来自专栏李维亮的博客

    网页在Safari快速滚动和回弹的原理: -webkit-overflow-scrolling : touch;的实现

    BOOL _beingRemoved; } @property(nonatomic, getter=isBeingRemoved) BOOL beingRemoved; // @synthesize beingRemoved=_beingRemoved; @property(retain, nonatomic) DOMNode *node; // @synthesize node=_node; @property(retain, nonatomic) UIWebOverflowContentView *overflowContentView; // @synthesize overflowContentView overflowContentView; @property(retain, nonatomic) UIWebOverflowScrollListener *scrollListener; // @synthesize scrollListener=_scrollListener; @property(nonatomic) UIWebDocumentView *webDocumentView; // @synthesize

    1.8K30发布于 2021-07-09
  • 来自专栏Unity3d程序开发

    cocos植物大战僵尸(四)选择植物卡片:植物卡片类

    std::string sName,bool bCanFlg);//改变卡片的颜色通过点击标签 void coolDownTimerStart();//开启冷却跑秒定时器 private: CC_SYNTHESIZE (int, m_iCoolDownTime, iCoolDownTime);//卡片的冷却时间 CC_SYNTHESIZE(Label*,m_labCoolDown,labCoolDown);//冷却的标签 CC_SYNTHESIZE(int, m_iCurCoolDownTime, iCurCoolDownTime);//正在进行的冷却时间 }; 植物卡片在选择面板中要显示出自身花费阳光值m_iCost

    50220编辑于 2023-08-24
  • 来自专栏iOS面试技术问题

    精选面试题教你应对高级iOS开发面试官(提供底层进阶规划蓝图)

    1、@property有两个对应的词,一个是@synthesize,一个是@dynamic。 如果@synthesize和@dynamic都没写,那么默认的就是@syntheszie var = _var; 2、@synthesize的语义是如果你没有手动实现 setter方法和 getter方法 @synthesize合成实例变量的规则是什么?假如property名为foo,存在一个名为_foo的实例变量,那么还会自动合成新变量么? 如果是@synthesize foo;还会生成一个名称为foo的成员变量,也就是说:如果没有指定成员变量的名> 称会自动生成一个属性同名的成员变量, 如果是@synthesize foo = _foo; 在有了自动合成属性实例变量之后,@synthesize还有哪些使用场景?

    89800发布于 2021-05-12
  • 来自专栏Unity3d程序开发

    cocos植物大战僵尸(二)主菜单场景:单例类

    如下所示 CC_SYNTHESIZE(int, m_iGameLevel, iGameLevel);//获得当前游戏的等级 CC_SYNTHESIZE(int, m_iHaveChoose, iHaveChoose );//已经选择卡片数 CC_SYNTHESIZE(int, m_iSun, iSun);//已经选择卡片数 在选择关卡时,改变传入关卡值。

    50120编辑于 2023-08-24
  • 来自专栏java编程那点事

    iOS理论基础(二)

    @synthesize和@dynamic分别有什么作用? a.@property有两个对应的词,一个是 @synthesize,一个是 @dynamic。 如果 @synthesize和 @dynamic都没写,那么默认的就是@syntheszie var = _var; b. @synthesize 的语义是如果你没有手动实现 setter 方法和 getter 方法,那么编译器会自动为你加上这两个方法。 c. 如果是@synthesize foo;还会生成一个名称为foo的成员变量,也就是说: 如果没有指定成员变量的名称会自动生成一个属性同名的成员变量, 如果是@synthesize foo = _foo;就不会生成成员变量了 其实,@synthesize语法还有一个应用场景,但是不太建议大家使用: 可以在类的实现代码里通过@synthesize语法来指定实例变量的名字: @implementationCYLPerson@synthesizefirstName

    74410编辑于 2023-02-25
  • 来自专栏Unity3d程序开发

    cocos2dx3.0戳青蛙游戏(打地鼠)

    CEntity(); void spriteBind(Sprite* sprite); Sprite* spriteGet(); private: Sprite* m_SprBind; CC_SYNTHESIZE (int, m_iHP, iHP); //血量 CC_SYNTHESIZE(int, m_iSpeed, iSpeed); //速度 CC_SYNTHESIZE(std::string, m_sName , sName); //名字 CC_SYNTHESIZE(Point, m_pos, pos); //坐标 }; 3.2青蛙类 青蛙类是基于实体类的。

    47630编辑于 2023-08-24
  • 来自专栏代码小技巧分享分析

    iOS开发-AsynSocket

    2.ViewController.m文件 #import "ViewController.h" @implementation ViewController @synthesize ipField; @synthesize sendField; @synthesize msgView; - (void)viewDidLoad { [super viewDidLoad

    1.1K40发布于 2021-10-29
  • 来自专栏iOS技术杂谈

    iOS @property探究(一): 基础详解你要知道的@property都在这里

    name = _name; @synthesize age = _age; @end 在声明一个属性(property)的时候尽量使用Foundation框架的数据类型,如整形使用NSInteger @synthesize表示为这两个属性自动生成名为_name和_age的底层实例变量,并自动生成相关的getter和setter也可以不写编译器默认会自动生成'_属性名'的实例变量以及相关的getter name = _name; @synthesize age = _age; - (void)setName:(NSString*)name { //必须使用_name来赋值,使用self.name @property (nonatomic, strong) CustomObject *customObject; @synthesize customObject = _customObject; name = _name; @synthesize age = _age; @end int main(int argc, const char * argv[]) { @autoreleasepool

    2K90发布于 2018-04-10
领券