ios xib 初始化高度_iOS category中的所谓属性 和 从xib初始化对象的方法

今天在编码时遇到以下代码

@interfaceUITextField (TCCustomFont)

@property (nonatomic, copy) NSString*fontName;@end

@implementationUITextField (TCCustomFont)- (NSString *)fontName {returnself.font.fontName;

}- (void)setFontName:(NSString *)fontName {

self.font=[UIFont fontWithName:fontName size:self.font.pointSize];

}@end

在学习oc开始阶段就学过:类别不能像类中加属性变量,那么这个 fontName是不是违反了这个规则呢?

其实没有! @property 的作用就是声明方法,当你写了@property (nonatomic, copy) NSString* fontName;

系统会自动把它翻译成- (NSString *)fontName 和- (void)setFontName:(NSString *)fontName

2个方法,并没有指定这2个方法的实现。如果你用了系统的@synthesize 来实现get

和set方法,那么系统会自动为你建立与之相应的类成员变量,但是,如果你自己实现了自己的 get

和set的方法,那么这2个操作就和成员变量无关了。比如上面的代码,get 和 set

的操作都和fontName类成员变量无关!所以,这样写仅仅是一种简单声明的方法。

利用这这种特性,可以实现另一种初始化xib的方法,比如我想在ViewController类从xib初始化时调用nslog出入一段文字,那么可以在ViewController中添加如下代码

- (void)setFontName:(NSString *)fontName {

NSLog(@"........");

}

之后,在xib中设置,如下图

请注意右边的user defined runtime attributes .这样就达到了目的!

原文:http://www.cnblogs.com/breezemist/p/3535423.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值