会话和_session(facebook整合)
我下载的Facebook集成代码…和我的应用程序工作正常..
我只是想知道session和_session之间有什么区别
还有loginDialog和_loginDialog
感谢帮助…:)
@interface MyFbViewController :UIViewController <FBSessionDelegate, FBRequestDelegate> { FBSession* _session; FBLoginDialog *_loginDialog; } @property (nonatomic, retain) FBSession *session; @property (nonatomic, retain) FBLoginDialog *loginDialog; @end
在MyFbViewController.m文件………
@synthesize session = _session; @synthesize loginDialog = _loginDialog;
_session
和_loginDialog
是类的实例variables。 因此,您完全负责对这些variables进行内存pipe理(即保留和释放),就像使用其他variables一样。
属性会话和loginDialog与synthesize
语句结合生成两个类属性,而这又是唯一的select器。
@synthesize session = _session;
基本上生成两个方法, - (FBSession *)session;
和- (void)setSession:(FBSession *)newSession;
只要你使用对象属性的点符号(即object.session
)就会调用它。 你可以自己写,省去了综合,但很less做,因为你再次负责内存pipe理。
由于这些属性是retain
属性,自动生成的方法处理必要的保留/释放的东西,可能看起来像这样:
- (FBSession *)session { return _session; } - (void)setSession:(FBSession *)newSession { if (newSession != _session) { [_session release]; [newSession retain]; _session = newSession; } }
只要将属性设置nil
(因为这将释放任何现有对象),就可以将其从内存pipe理负担中解放出来。
_session是你的variables。 会话是您的访问者。
你可以写_session
或self.session
但不能写self._session
或只是session
。
但是, _session
和self.session
并不是一回事。 self.session
调用生成的getter或setter属性参数。
对于非primefaces样本,请保留这样的setter:
- (void) setSession:(FBSession*)session { if(_session != session) { [_session release]; _session = [session retain]; } }
这段代码为你pipe理内存。 如果直接使用_session,则旧值永远不会释放(并泄漏),新值不会保留。
会话前的_表示这个variables是私人的,你不必直接访问它
你的属性几乎总是有一个后备variables。 什么
@synthesize session = _session; 是声明您的search栏的支持variables将被称为_session。 这使您可以将属性的名称与variables的名称分开。 事实上,如果你不使用@synthesize,你根本不需要有一个后备variables。
它避免了与variables名称的冲突,并且在我使用局部variables和使用实例variables时清楚地说明了这一点。
如您所见,有一个名为session
的属性和一个名为_session
的实例variables 。 属性自动生成访问器(如果你把它们合成)。 他们可以通过使用dot-syntax( self.session
)或者使用setter和getter( [self setSession:yourSession]
/ [self session]
访问,这个属性使用一个backstore(由于属性本身不存储信息,他们只是提供一个访问数据的接口)名为_session
。这些访问器负责内存pipe理,所以你应该只使用这些。
足够的等等等等:大多数情况下,如果你有一个财产,你应该使用它。 所以在你的代码中使用self.session
而不是_session
。
Objective-C编程指南详细介绍了着名的iOS开发人员库中的属性
- 如何在Swift iOS应用程序的头文件中导入FacebookSDK
- Facebook iOS SDK 4.1.0共享callback
- FBFriendPickerDelegate与Facebook v4消失
- 当您在iOS应用程序和服务器中使用令牌时,如何处理Facebook弃用offline_access
- 将Facebook应用程序链接链接到iTunes下载页面
- Facebook UIActivityViewController缺less取消和发布button
- 没有redirect到Safari浏览器的Facebook iOS SDK授权
- 适用于iOS的Facebook SDK 3.1 – 在iOS6上运行,但在iOS 5.x上崩溃
- Firebase 3.x – Facebooklogin