2015-06-05 95 views
2

我正在實現一個庫(.a),並且我想從庫發送通知計數到應用程序,以便它們可以在其UI中顯示通知計數。我希望他們能夠實現的唯一方法類似,使用'Delegation'在兩個視圖控制器之間傳遞數據:Objective-C

-(void)updateCount:(int)count{ 
    NSLog(@"count *d", count); 
} 

我怎樣才能不斷地從我的圖書館發送數量,使得他們可以用它在使用UpdateCount方法來顯示。 我搜索並瞭解了回調函數。我不知道如何實現它們。有沒有其他的方式來做到這一點。

+0

類你看了關於[代表團和通知(HTTPS:/ /developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html#//apple_ref/doc/uid/TP40008195-CH14-SW4)或[使用協議](https:// developer.apple .COM /庫/ IOS /文檔/可可/概念/ ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html#// apple_ref/DOC/UID/TP40011210-CH11)? – Mats

回答

7

你有3個選擇

  1. 代表
  2. 通知
  3. 座,又稱回調

我想你想要的是代表

假設你有這樣的文件爲lib

TestLib.h

#import <Foundation/Foundation.h> 
@protocol TestLibDelegate<NSObject> 
-(void)updateCount:(int)count; 
@end 

@interface TestLib : NSObject 
@property(weak,nonatomic)id<TestLibDelegate> delegate; 
-(void)startUpdatingCount; 
@end 

TestLib.m

#import "TestLib.h" 

@implementation TestLib 
-(void)startUpdatingCount{ 
    int count = 0;//Create count 
    if ([self.delegate respondsToSelector:@selector(updateCount:)]) { 
     [self.delegate updateCount:count]; 
    } 
} 
@end 

然後在要使用

#import "ViewController.h" 
#import "TestLib.h" 
@interface ViewController()<TestLibDelegate> 
@property (strong,nonatomic)TestLib * lib; 
@end 

@implementation ViewController 
-(void)viewDidLoad{ 
self.lib = [[TestLib alloc] init]; 
self.lib.delegate = self; 
[self.lib startUpdatingCount]; 
} 
-(void)updateCount:(int)count{ 
    NSLog(@"%d",count); 
} 

@end 
+0

它的工作原理。謝謝@Leo。 –

相關問題