0
我有一個API類,讓我們稱之爲MyClass,我想在我的整個應用程序中可用。因此我將#import放入MyProject-Prefix.pch
文件。初始化我自己的api類
現在,當我(在我的appDelegate中)啓動該類時,我收到錯誤消息cannot init a class object.
。 我明白我是不正確地啓動我的類,但我不知道我應該怎麼做......因爲這不是常見的發展(因爲我看到它)沒有很多信息來找到thrue谷歌(或我錯了搜索;))
所以,我有兩個問題:
- 任何鏈接名爲 「創造的Objective-C API對Dummys」? ;)
- 快速查看我的代碼,我做錯了什麼?
這是我的課: MyClass.h
#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonDigest.h>
#import "NSStringAdditions.h"
#import "XMLRPCResponse.h"
#import "XMLRPCRequest.h"
#import "XMLRPCConnection.h"
/**
* END required libs
*/
extern int EID;
extern NSString * SHARED_SECRET;
extern NSString * MODE;
@interface MyClass : NSObject
+ (id)initWithEid:(int)eid secret:(NSString*)secret mode:(NSString*)mode;
+ (NSArray*)web_invoice_infoWithOCR:(NSString*)ocr pno:(NSString*)pno;
+ (NSString*)the_digest:(NSString*)source;
@end
MyClass.m
#import "MyClass.h"
@implementation MyClass
int EID;
NSString * SHARED_SECRET;
NSString * MODE;
NSString * URL_LIVE;
NSString * URL_BETA;
#pragma mark init/dealloc
+ (id)init {
self = [super init];
if (self)
{
}
return self;
}
+ (id)initWithEid:(int)eid secret:(NSString*)secret mode:(NSString*)mode
{
self = [super init];
if (self)
{
if (![[mode lowercaseString] isEqualToString:@"beta"] && ![[mode lowercaseString] isEqualToString:@"live"])
{
@throw ([NSException exceptionWithName:@"Invalid mode" reason:[NSString stringWithFormat:@"Invalid mode '%@' selected. Should either be 'beta' or 'live'", mode] userInfo:nil]);
}
EID = eid;
SHARED_SECRET = secret;
MODE = [mode lowercaseString];
}
return self;
}
+ (NSArray*)web_invoice_infoWithOCR:(NSString*)ocr pno:(NSString*)pno {
NSArray *params = [NSArray arrayWithObjects:ocr, EID, pno, [MyClass the_digest:[NSString stringWithFormat:@"%d:%@:%@", EID, ocr, SHARED_SECRET]], nil];
NSLog(@"Array: %@", params);
return params;
}
- (id)xmrpc_call_function:(NSString*)method parameters:(NSArray*)params
{
// Not finished yet, Warning exists
}
[...]
在看看我的代碼,你會發現+(ID)初始化函數。我試過-(id)init, -(id)initialize, +(id)initialize, +(void)initialize, -(void)initialize
。
這是怎麼了我「負荷」我的課,我的AppDelegate:
[MyClass initWithEid:1234 secret:@"1234" mode:@"BETA"];
編輯
我試圖啓動我的課以相同的方式如亂舞呢。例如:
[FlurryAnalytics startSession:@"1234"];
好吧......現在覺得很愚蠢......我應該已經看到了一個。但是,如果我看一下,例如Flurry ...,你可以使用'FlurryAnalytics startSession:@「1234」];''來啓動亂七八糟的功能。他們怎麼能這樣做? –
Flurry使用類方法'startSession:'創建一個單例,然後他們只是調用您調用的任何類方法的單例。 – rckoenes
啊,好的。我明白了......我會爲此尋找一點。日Thnx。 –