- 浏览: 45593 次
- 性别:
- 来自: 河南
最新评论
If you go into the UIKit_Framework and look at the NSNibDeclarations.h header file, you’ll see that they’re defined like this: macros(宏)
#define IBAction void
#define IBOutlet
#define IBOutletCollection(ClassName)
Confused? These two keywords do absolutely nothing as far as the compiler is concerned. IBOutlet gets entirely removed from the code before the compiler ever sees it. IBAction resolves to a void return type, which just means that action methods do not return a value. So, what’s going on here?
The answer is simple, really: IBOutlet and IBAction are not used by the compiler. They are used by Interface Builder. Interface Builder uses these keywords to parse out the outlets and actions available to it. Interface Builder can only see methods that are prefaced with IBAction and can only see variables or properties that are prefaced with IBOutlet. Also, the presence of these keywords tells other programmers, looking at your code in the future, that the variables and methods in question aren’t dealt with entirely in code. They’ll need to delve into the relevant nib file to see how things are hooked up and used.
这两个宏在UIKit_Framework 中定义
IBAction(行为)和IBOutlet(插座)只是告诉InterfaceBuilder这些是用于界面交互的,打开InterfaceBuilder后,首先扫描IBAction和IBOutlet,InterfaceBuilder只识别以IBAction开头的方法和以IBOutlet开头的属性,代码别编译后,IBAction被解析为void,而IBOutlet被解析为空。
http://eyecm.com/iboutlet-and-ibaction-that/
内存管理
如果一个变量在类中被定义为了 IBOutlet 那么你无需对其进行实例化,xib载入器会对其初始化。切记不要初始化两回,内存会溢出,而且对象锁定也会出错。
如果一个变量在类中被定义为了 IBOutlet 那么你必须负责将其释放。xib载入器不会帮忙的。
需要注意的是,任何一个被声明为IBOutlet并且在Interface Builder里被连接到一个UI组件的成员变量,会被额外retain一次。
常见的情形如: IBOutlet UILabel *label;
-(IBAction) btnClicked:(id)sender;
这个label在Interface Builder里被连接到一个UILabel。此时,这个label的retainCount为2。
所以,只要使用了IBOutlet变量,一定需要在dealloc或者viewDidUnload里release这个变量。
实现m文件中:
-(void) dealloc
{
[label release];
[super dealloc];
}
http://blog.joycode.com/ghj/archives/2012/05/22/116258.joy
#define IBAction void
#define IBOutlet
#define IBOutletCollection(ClassName)
Confused? These two keywords do absolutely nothing as far as the compiler is concerned. IBOutlet gets entirely removed from the code before the compiler ever sees it. IBAction resolves to a void return type, which just means that action methods do not return a value. So, what’s going on here?
The answer is simple, really: IBOutlet and IBAction are not used by the compiler. They are used by Interface Builder. Interface Builder uses these keywords to parse out the outlets and actions available to it. Interface Builder can only see methods that are prefaced with IBAction and can only see variables or properties that are prefaced with IBOutlet. Also, the presence of these keywords tells other programmers, looking at your code in the future, that the variables and methods in question aren’t dealt with entirely in code. They’ll need to delve into the relevant nib file to see how things are hooked up and used.
这两个宏在UIKit_Framework 中定义
IBAction(行为)和IBOutlet(插座)只是告诉InterfaceBuilder这些是用于界面交互的,打开InterfaceBuilder后,首先扫描IBAction和IBOutlet,InterfaceBuilder只识别以IBAction开头的方法和以IBOutlet开头的属性,代码别编译后,IBAction被解析为void,而IBOutlet被解析为空。
http://eyecm.com/iboutlet-and-ibaction-that/
内存管理
如果一个变量在类中被定义为了 IBOutlet 那么你无需对其进行实例化,xib载入器会对其初始化。切记不要初始化两回,内存会溢出,而且对象锁定也会出错。
如果一个变量在类中被定义为了 IBOutlet 那么你必须负责将其释放。xib载入器不会帮忙的。
需要注意的是,任何一个被声明为IBOutlet并且在Interface Builder里被连接到一个UI组件的成员变量,会被额外retain一次。
常见的情形如: IBOutlet UILabel *label;
-(IBAction) btnClicked:(id)sender;
这个label在Interface Builder里被连接到一个UILabel。此时,这个label的retainCount为2。
所以,只要使用了IBOutlet变量,一定需要在dealloc或者viewDidUnload里release这个变量。
实现m文件中:
-(void) dealloc
{
[label release];
[super dealloc];
}
http://blog.joycode.com/ghj/archives/2012/05/22/116258.joy
发表评论
-
在真机上运行一个程序的过程以及将app发布到Appstore上的过程
2014-09-05 18:19 696在真机上运行一个程序的过程 1.打开钥匙串 ,从证书颁发 ... -
彻底删除iOS应用,包括沙盒及开发者里边的东西
2014-05-08 16:06 11811.长按图标,出现X号删除 2.clean build f ... -
播放视频
2014-05-05 21:16 672播放视频方法一: MPMoviePlayerContro ... -
播放视频
2014-05-05 21:15 0播放视频方法一: MPMoviePlayerControl ... -
播放视频
2014-05-05 21:13 0播放视频方法一: MPMoviePlayerControl ... -
流式布局界面
2014-03-04 12:49 632想让图标按流式布局,更改控件的Autosizing属性 ... -
iOS流式布局
2014-02-22 14:01 1469想让图标按流式布局,更改控件的Autosizing属性:四周 ... -
Mac OS在线升级以及Xcode升级
2013-12-24 14:02 14312升级苹果系统: 打开AppStore,在搜索栏内输 ... -
instancetype id
2013-12-16 12:27 689Objective-C is a rapidly evolv ... -
@ at
2013-11-21 13:54 690Interface & Implementation ... -
NSPredicate
2013-11-21 10:27 828NSPredicate is a Foundation ... -
NSFileManager
2013-11-21 09:30 608NSFileManager is Foundation's ... -
点击Run按钮后Stop按钮变灰
2013-09-24 17:31 749当把应用程序从模拟器删除(长按AppIcon,图标晃动,出现 ... -
屏幕是横向的时候,NavigationBar总是在下边?
2013-08-20 10:32 742这是由于旋转时没有定位屏幕的位置,我们可以写一个旋转时的方 ... -
Why can't I save data to my application's bundle when running on the device?
2013-08-06 21:19 598Q: My application saves data ... -
Xcode 4.1~4.6 + iOS 5、iOS 6免证书(iDP)开发+真机调试+生成IPA全攻略
2013-07-30 11:33 1190开发环境使用的是目前为止最新的稳定版软件:Mac OS ... -
Which SQLite administration console do you recommend?
2013-07-21 19:30 895I've been on a search for a ...
相关推荐
在iPhone平台上,引入了IBOutlet与IBAction。通过在变量前增加IBOutlet 来说明该变量将与界面上的某个UI对象对应,在方法前增加IBAction来说明该方法将与界面上的事件对应. 下面通过一个连接网络服务器(Network...
3. **连接IBOutlet和IBAction**:为了使代码与XIB文件中的元素交互,我们需要创建IBOutlet和IBAction。IBOutlet用于连接视图中的控件到代码中的实例变量,而IBAction则用于连接控件的事件到代码中的方法。在...
这通常是通过设置IBOutlet和IBAction完成的。IBOutlet用于连接UISwitch到代码中的一个变量,这样就可以在代码中访问和修改它的状态。IBAction则用于处理用户的交互事件,例如当用户改变UISwitch的状态时触发的事件。...
在Storyboard中,为这些元素分配IBOutlet和IBAction,以便在代码中引用它们。 对于Storyboard中的代码绑定,假设我们有IBOutlet和IBAction如下: ```swift @IBOutlet weak var baseTextField: UITextField! @...
3. 在Xib中,选择File's Owner,将其Class设置为`CustomShareView`,然后连接IBOutlet和IBAction到对应的UI元素。 步骤四:封装和使用 1. 在需要使用自定义分享弹框的地方,加载并显示`CustomShareView`。这通常在...
为了在代码中与XIB中的UI元素交互,我们需要创建IBOutlet和IBAction。IBOutlet用于引用UI元素,而IBAction则用于响应用户的操作。在Interface Builder中,可以通过Control-drag的方式从视图到对应的UIViewController...
2. **IBOutlet与IBAction**:为了实现按钮间的连接,你需要在对应的ViewController类中创建IBOutlet和IBAction。IBOutlet用于连接界面元素到代码,而IBAction则定义了当用户执行特定操作(如点击按钮)时调用的函数...
11. **IBOutlet和IBAction的使用**:IBOutlet是对象的引用,IBAction是方法的标记,用于Interface Builder中的交互。 12. **内存管理实践**:创建对象后,需要在不再使用时调用`release`或`autorelease`来释放内存...
4. **连接IBOutlet和IBAction**:在Interface Builder中,我们可以将NIB文件中的UI元素与`UIView`子类的属性(IBOutlet)和方法(IBAction)连接起来,以便在代码中直接操作这些元素。 5. **使用NIB父类**:现在...
6. **连接IBOutlet和IBAction**:将表视图和任何其他需要交互的元素与ViewController中的IBOutlet和IBAction连接起来。 7. **设置DataSource和Delegate**:在ViewController中,声明UITableViewDataSource和...
做iOS的二维码扫描,有两个第三方库可以选择,ZBar和ZXing。今天要介绍的是iOS7.0后...IBOutlet、IBAction如下: @property (weak, nonatomic) IBOutlet UIView *viewPreview; @property (weak, nonatomic) IBOutlet
在Assistant Editor中,开启Auto-Connect(⌥⌘Enter),然后将UI元素拖动到对应的代码类(这里假设我们已经创建了一个名为`CustomTableViewCell`的Swift类),创建IBOutlet和IBAction。这使得我们在代码中可以直接...
3. **连接IBOutlet和IBAction**: 在XIB中,可以将控件的属性和事件处理方法连接到类的IBOutlet和IBAction,实现代码与界面的绑定。 4. **加载XIB**: 在需要使用自定义控件的地方,可以通过以下方式加载XIB: ```...
6. IBOutlet和IBAction:IBOutlet是将界面元素和程序中的对象连接起来的方式,IBAction则是响应用户界面事件的方法。在IOS开发中,IBOutlet用于将界面元素连接到程序中的对象,而IBAction用于定义用户界面事件的响应...
4. **手动绑定和数据传递**:虽然Interface Builder通常用于自动绑定,但“半手工打造”可能意味着博主会介绍如何手动建立对象之间的联系,例如使用`IBOutlet`和`IBAction`,以及如何传递数据和事件处理。...
`@property`声明了多个IBOutlet和IBAction,IBOutlet用于连接界面元素,例如表格视图、文本字段和按钮,而IBAction则与用户交互事件关联,如加载CSV数据和搜索功能。 在`dataTableView.m`文件中,导入了更多第三方...
书中会详细解释如何使用Storyboard创建界面布局,理解UIViewController及其子类的作用,以及如何使用IBOutlet和IBAction连接界面元素与代码。同时,你还会学到如何运用Auto Layout实现自适应界面,使应用能在不同...
通过Control-drag操作,将UISlider和UISwitch连接到ViewController的Swift文件中,创建IBOutlet用于获取控件的当前状态,创建IBAction用于响应用户交互。 ```swift @IBOutlet weak var volumeSlider: UISlider! @...