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

     

  • 相关阅读:
    显示文件本地文件夹
    Select Dependencies选择依赖项
    搜索小技巧
    783. Minimum Distance Between BST Nodes BST节点之间的最小距离
    5. Longest Palindromic Substring 最长的回文子串
    12. Integer to Roman 整数转罗马数字
    3. Longest Substring Without Repeating Characters 最长的子串不重复字符
    539. Minimum Time Difference 最小时差
    43. Multiply Strings 字符串相乘
    445. Add Two Numbers II 两个数字相加2
  • 原文地址:https://www.cnblogs.com/wanyakun/p/3478071.html
Copyright © 2011-2022 走看看