您好我想知道類在Objective-C困惑類
我有3個文件
A_ViewController
A_ViewController +分類
B_ViewController
這裏是示例代碼
1-1。 A_ViewController.h
@interface A_ViewController {
// some instance Variables
}
//some public methods
@end
1-2 A_ViewController.m
#import "A_ViewController.h."
@implementation A_ViewController
// implementation public methods and private methods
@end
2-1。 A_ViewController + Category.h
@interface A_ViewControler(Category)
-(void) categoryMethod;
@end
2-2。 A_ViewController + Category.m
#import "A_ViewController.h"
#import "A_ViewController+Category.h"
@implementation A_ViewController(Category)
-(void) categoryMethod {
NSLog(@"it's A_ViewController+Category");
}
@end
3-1。 B_ViewController.h
@interface B_ViewController {
// some instance variables
}
-(void) myMethod;
3-2。 B_ViewController.m
#import "B_ViewController.h"
#import "A_ViewController.h"
@interface A_ViewController() // i think it's A_ViewController extension, not A_ViewController+Category, am i right?
-(void) categoryMethod;
@end
@implementation B_ViewController
-(void) myMethod
{
A_ViewController *obj = [[A_ViewController alloc] init];
[obj categoryMethod];
}
@end
我認爲它的崩潰,因爲我不是導入A_ViewController + Category.h
,我不B_ViewController.m
實施-(void) categoryMethod
但它工作正常,並沒有警告。
[obj categoryMethod]
如何連接?
如果這是完美的語法,我有擴展問題。
,如果我有一個名爲A_ViewController +產品組別
另一類這裏的A_ViewController + Category.h
@interface A_ViewController(Category2)
-(void) categoryMethod;
@end
和A_ViewController + Category2.m
#import "A_ViewController.h"
#import "A_ViewController+Category2.h"
@implementation A_ViewController(Category2)
-(void) categoryMethod
{
NSLog(@"it's A_ViewController+Category2");
}
@end
,這種情況,如果我寫代碼如3-2,
然後[obj categoryMethod]
可以得到保證
來自A_ViewController + Category或A_ViewController + Category2,對吧?
我在2天之前就曾想過你,但昨天我看到了類似於我的問題的代碼,所以我有一個問題。 – MoonSoo 2012-08-07 01:15:56
我已經更新了我的答案,但我不完全理解這個問題,因爲類別是非常簡單的,類別選擇器不應該是相同的。 – Jessedc 2012-08-07 01:24:18