zoukankan      html  css  js  c++  java
  • iOS单例

    以WeiboHelper单例为例子:

    头文件:

     1 #import <Foundation/Foundation.h>
     2 
     3 #import "WeiboSDK.h"
     4 
     5 
     6 
     7 @interface WeiboHelper : NSObject<WeiboSDKDelegate>
     8 
     9  
    10 
    11 + (WeiboHelper *)sharedWeiboHelper;
    12 
    13  
    14 
    15 - (void) WBAuthorize;
    16 
    17 - (void)sendTextContent:(NSString *)text;
    18 
    19 - (void)sendTextContent:(NSString *)text imageData:(NSData *)imageData;
    20 
    21  
    22 
    23 @end

    .m实现文件

      1 #import "WeiboHelper.h"
      2 
      3 #define kWEIBOAPPKEY        @"1742124337"
      4 #define kRedirectURI        @"http://"
      5 
      6 
      7 @implementation WeiboHelper
      8 
      9 #pragma mark - Singleton life cycle
     10 + (WeiboHelper *)sharedWeiboHelper
     11 {
     12     static WeiboHelper *weiboHelper = nil;
     13     static dispatch_once_t onceToken;
     14     dispatch_once(&onceToken, ^{
     15         weiboHelper = [[super allocWithZone:NULL] init];
     16         [WeiboSDK registerApp:kWEIBOAPPKEY];
     17         [WeiboSDK enableDebugMode:YES];
     18     });
     19     return weiboHelper;
     20 }
     21 
     22 + (id)allocWithZone:(NSZone *)zone
     23 {
     24     return [[self sharedWeiboHelper] retain];
     25 }
     26 
     27 - (id) copyWithZone:(NSZone *)zone
     28 {
     29     return self;
     30 }
     31 
     32 - (id) retain
     33 {
     34     return self;
     35 }
     36 
     37 - (unsigned) retainCount
     38 {
     39     return UINT_MAX;
     40 }
     41 
     42 - (oneway void) release
     43 {
     44     
     45 }
     46 
     47 - (id) autorelease
     48 {
     49     return self;
     50 }
     51 
     52 #pragma mark - user method
     53 - (void)WBAuthorize
     54 {
     55     WBAuthorizeRequest *request = [WBAuthorizeRequest request];
     56     request.redirectURI = kRedirectURI;
     57     request.scope = @"all";
     58     request.userInfo = @{@"SSO_From": @"ViewController",
     59                          @"Other_Info_1": [NSNumber numberWithInt:123],
     60                          @"Other_Info_2": @[@"obj1", @"obj2"],
     61                          @"Other_Info_3": @{@"key1": @"obj1", @"key2": @"obj2"}};
     62     [WeiboSDK sendRequest:request];
     63 }
     64 
     65 - (void)sendTextContent:(NSString *)text
     66 {
     67     WBMessageObject *message = [WBMessageObject message];
     68     NSString *share = [[NSUserDefaults standardUserDefaults] objectForKey:@"share"];
     69     message.text = [NSString stringWithFormat:@"%@ %@", text, share];
     70     WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest requestWithMessage:message];
     71     [WeiboSDK sendRequest:request];
     72 }
     73 
     74 - (void)sendTextContent:(NSString *)text imageData:(NSData *)imageData
     75 {
     76     WBImageObject *imageObject = [WBImageObject object];
     77     imageObject.imageData = imageData;
     78     
     79     WBMessageObject *message = [WBMessageObject message];
     80     NSString *share = [[NSUserDefaults standardUserDefaults] objectForKey:@"share"];
     81     message.text = [NSString stringWithFormat:@"%@ %@", text, share];
     82     message.imageObject = imageObject;
     83     
     84     WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest requestWithMessage:message];
     85     [WeiboSDK sendRequest:request];
     86 }
     87 
     88 #pragma mark - WeiboSDKDelegate
     89 /**
     90  收到一个来自微博客户端程序的请求
     91  
     92  收到微博的请求后,第三方应用应该按照请求类型进行处理,处理完后必须通过 [WeiboSDK sendResponse:] 将结果回传给微博
     93  @param request 具体的请求对象
     94  */
     95 - (void)didReceiveWeiboRequest:(WBBaseRequest *)request
     96 {
     97     
     98 }
     99 
    100 /**
    101  收到一个来自微博客户端程序的响应
    102  
    103  收到微博的响应后,第三方应用可以通过响应类型、响应的数据和 [WBBaseResponse userInfo] 中的数据完成自己的功能
    104  @param response 具体的响应对象
    105  */
    106 - (void)didReceiveWeiboResponse:(WBBaseResponse *)response
    107 {
    108     switch (response.statusCode) {
    109         case WeiboSDKResponseStatusCodeSuccess:
    110             //成功
    111             break;
    112         case WeiboSDKResponseStatusCodeUserCancel:
    113             //用户取消发送
    114             break;
    115         case WeiboSDKResponseStatusCodeSentFail:
    116             //发送失败
    117             break;
    118         case WeiboSDKResponseStatusCodeAuthDeny:
    119             //授权失败
    120             break;
    121         case WeiboSDKResponseStatusCodeUserCancelInstall:
    122             //用户取消安装微博客户端
    123             break;
    124         case WeiboSDKResponseStatusCodeUnsupport:
    125             //不支持的请求
    126             break;
    127         case WeiboSDKResponseStatusCodeUnknown:
    128             //未知
    129             break;
    130         default:
    131             break;
    132     }
    133 }
    134 
    135 @end

     

  • 相关阅读:
    求两图的 对比度
    关于opencv中的颜色模型转换之CV_BGR2HSV
    转 C++函数返回值,你必须注意的问题
    opencv 3.2 vs2015 debug assertion __acrt_first_block == header
    vs的【warning C4996:'fopen': This function or variable may be unsafe】解决方案
    c++ opencv 3.2 +Mfc VS2015窗体显示图片方法
    c++中“箭头(->)”和“点号(.)”操作符的区别
    C# devexpress gridcontrol 分页 控件制作
    c#Md5 32位加密结果少了两个0的原因
    opencv 线,椭圆 圆
  • 原文地址:https://www.cnblogs.com/wanyakun/p/3478071.html
Copyright © 2011-2022 走看看