Permalink
Browse files

封装为静态库,支持iOS6

  • Loading branch information...
JimLiu committed Sep 18, 2012
1 parent 815d480 commit 522a0371a69f49f023420dc29141b5c01620d3f7
Showing with 28,894 additions and 3 deletions.
  1. +9 −3 README.md
  2. +16 −0 Sample/Controllers/AccountsViewController.h
  3. +195 −0 Sample/Controllers/AccountsViewController.m
  4. +39 −0 Sample/Controllers/ComposeViewController.h
  5. +145 −0 Sample/Controllers/ComposeViewController.m
  6. +869 −0 Sample/Controllers/ComposeViewController.xib
  7. +22 −0 Sample/Controllers/HomeViewController.h
  8. +214 −0 Sample/Controllers/HomeViewController.m
  9. BIN Sample/Icon.png
  10. BIN Sample/Icon@2x.png
  11. +24 −0 Sample/README.md
  12. +401 −0 Sample/Sample.xcodeproj/project.pbxproj
  13. +20 −0 Sample/Sample/AppDelegate.h
  14. +58 −0 Sample/Sample/AppDelegate.m
  15. BIN Sample/Sample/Default-568h@2x.png
  16. BIN Sample/Sample/Default.png
  17. BIN Sample/Sample/Default@2x.png
  18. +49 −0 Sample/Sample/Sample-Info.plist
  19. +14 −0 Sample/Sample/Sample-Prefix.pch
  20. +2 −0 Sample/Sample/en.lproj/InfoPlist.strings
  21. +18 −0 Sample/Sample/main.m
  22. +13 −0 Sample/ViewController.h
  23. +34 −0 Sample/ViewController.m
  24. +18 −0 sample_nolib/Controllers/AccountsViewController.h
  25. +195 −0 sample_nolib/Controllers/AccountsViewController.m
  26. +40 −0 sample_nolib/Controllers/ComposeViewController.h
  27. +144 −0 sample_nolib/Controllers/ComposeViewController.m
  28. +869 −0 sample_nolib/Controllers/ComposeViewController.xib
  29. +21 −0 sample_nolib/Controllers/HomeViewController.h
  30. +214 −0 sample_nolib/Controllers/HomeViewController.m
  31. BIN sample_nolib/Icon.png
  32. BIN sample_nolib/Icon@2x.png
  33. +24 −0 sample_nolib/README.md
  34. +13 −0 sample_nolib/ViewController.h
  35. +34 −0 sample_nolib/ViewController.m
  36. +622 −0 sample_nolib/WeiboSDK_Sample_NoLib.xcodeproj/project.pbxproj
  37. +21 −0 sample_nolib/WeiboSDK_Sample_NoLib/AppDelegate.h
  38. +61 −0 sample_nolib/WeiboSDK_Sample_NoLib/AppDelegate.m
  39. BIN sample_nolib/WeiboSDK_Sample_NoLib/Default-568h@2x.png
  40. BIN sample_nolib/WeiboSDK_Sample_NoLib/Default.png
  41. BIN sample_nolib/WeiboSDK_Sample_NoLib/Default@2x.png
  42. +49 −0 sample_nolib/WeiboSDK_Sample_NoLib/WeiboSDK_Sample_NoLib-Info.plist
  43. +14 −0 sample_nolib/WeiboSDK_Sample_NoLib/WeiboSDK_Sample_NoLib-Prefix.pch
  44. +2 −0 sample_nolib/WeiboSDK_Sample_NoLib/en.lproj/InfoPlist.strings
  45. +18 −0 sample_nolib/WeiboSDK_Sample_NoLib/main.m
  46. BIN screenshots/Accounts.png
  47. BIN screenshots/Compose.png
  48. BIN screenshots/Home.png
  49. +29 −0 src/Additions/NSDictionaryAdditions.h
  50. +154 −0 src/Additions/NSDictionaryAdditions.m
  51. +23 −0 src/Models/GeoInfo.h
  52. +29 −0 src/Models/GeoInfo.m
  53. +23 −0 src/Models/Province.h
  54. +46 −0 src/Models/Province.m
  55. +20 −0 src/Models/Resources.h
  56. +64 −0 src/Models/Resources.m
  57. +58 −0 src/Models/Status.h
  58. +159 −0 src/Models/Status.m
  59. +81 −0 src/Models/User.h
  60. +179 −0 src/Models/User.m
  61. +26 −0 src/Utilities/PathHelper.h
  62. +69 −0 src/Utilities/PathHelper.m
  63. +27 −0 src/WeiboEngine/WeiboAccount.h
  64. +59 −0 src/WeiboEngine/WeiboAccount.m
  65. +37 −0 src/WeiboEngine/WeiboAccounts.h
  66. +151 −0 src/WeiboEngine/WeiboAccounts.m
  67. +40 −0 src/WeiboEngine/WeiboAuthentication.h
  68. +60 −0 src/WeiboEngine/WeiboAuthentication.m
  69. +17 −0 src/WeiboEngine/WeiboConfig.h
  70. +13 −0 src/WeiboEngine/WeiboEngine.h
  71. +13 −0 src/WeiboEngine/WeiboEngine.m
  72. +13 −0 src/WeiboEngine/WeiboQuery/StatusQuery.h
  73. +13 −0 src/WeiboEngine/WeiboQuery/StatusQuery.m
  74. +28 −0 src/WeiboEngine/WeiboQuery/TimelineQuery.h
  75. +87 −0 src/WeiboEngine/WeiboQuery/TimelineQuery.m
  76. +28 −0 src/WeiboEngine/WeiboQuery/UserQuery.h
  77. +58 −0 src/WeiboEngine/WeiboQuery/UserQuery.m
  78. +24 −0 src/WeiboEngine/WeiboQuery/WeiboQuery.h
  79. +98 −0 src/WeiboEngine/WeiboQuery/WeiboQuery.m
  80. +53 −0 src/WeiboEngine/WeiboRequest.h
  81. +280 −0 src/WeiboEngine/WeiboRequest.m
  82. +43 −0 src/WeiboEngine/WeiboSignIn.h
  83. +129 −0 src/WeiboEngine/WeiboSignIn.m
  84. +31 −0 src/WeiboEngine/WeiboSignInViewController.h
  85. +158 −0 src/WeiboEngine/WeiboSignInViewController.m
  86. +118 −0 src/WeiboEngine/WeiboSignInViewController.xib
  87. +583 −0 src/WeiboSDK.xcodeproj/project.pbxproj
  88. +7 −0 src/WeiboSDK/WeiboSDK-Prefix.pch
  89. +26 −0 src/WeiboSDK/WeiboSDK.h
  90. +35 −0 thirdparts/ASIHTTPRequest/ASIAuthenticationDialog.h
  91. +493 −0 thirdparts/ASIHTTPRequest/ASIAuthenticationDialog.m
  92. +103 −0 thirdparts/ASIHTTPRequest/ASICacheDelegate.h
  93. +42 −0 thirdparts/ASIHTTPRequest/ASIDataCompressor.h
  94. +219 −0 thirdparts/ASIHTTPRequest/ASIDataCompressor.m
  95. +41 −0 thirdparts/ASIHTTPRequest/ASIDataDecompressor.h
  96. +218 −0 thirdparts/ASIHTTPRequest/ASIDataDecompressor.m
  97. +46 −0 thirdparts/ASIHTTPRequest/ASIDownloadCache.h
  98. +514 −0 thirdparts/ASIHTTPRequest/ASIDownloadCache.m
  99. +76 −0 thirdparts/ASIHTTPRequest/ASIFormDataRequest.h
  100. +362 −0 thirdparts/ASIHTTPRequest/ASIFormDataRequest.m
  101. +1,004 −0 thirdparts/ASIHTTPRequest/ASIHTTPRequest.h
  102. +5,125 −0 thirdparts/ASIHTTPRequest/ASIHTTPRequest.m
  103. +43 −0 thirdparts/ASIHTTPRequest/ASIHTTPRequestConfig.h
  104. +35 −0 thirdparts/ASIHTTPRequest/ASIHTTPRequestDelegate.h
  105. +26 −0 thirdparts/ASIHTTPRequest/ASIInputStream.h
  106. +138 −0 thirdparts/ASIHTTPRequest/ASIInputStream.m
  107. +108 −0 thirdparts/ASIHTTPRequest/ASINetworkQueue.h
  108. +343 −0 thirdparts/ASIHTTPRequest/ASINetworkQueue.m
  109. +38 −0 thirdparts/ASIHTTPRequest/ASIProgressDelegate.h
  110. +80 −0 thirdparts/ASIHTTPRequest/ASIWebPageRequest/ASIWebPageRequest.h
  111. +722 −0 thirdparts/ASIHTTPRequest/ASIWebPageRequest/ASIWebPageRequest.m
  112. +60 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesCDNRequest.h
  113. +167 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesCDNRequest.m
  114. +41 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesContainer.h
  115. +31 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesContainer.m
  116. +43 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesContainerRequest.h
  117. +134 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesContainerRequest.m
  118. +31 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesContainerXMLParserDelegate.h
  119. +72 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesContainerXMLParserDelegate.m
  120. +30 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesObject.h
  121. +29 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesObject.m
  122. +71 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesObjectRequest.h
  123. +261 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesObjectRequest.m
  124. +40 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesRequest.h
  125. +129 −0 thirdparts/ASIHTTPRequest/CloudFiles/ASICloudFilesRequest.m
  126. +194 −0 thirdparts/ASIHTTPRequest/Reachability/Reachability.h
  127. +814 −0 thirdparts/ASIHTTPRequest/Reachability/Reachability.m
  128. +23 −0 thirdparts/ASIHTTPRequest/S3/ASINSXMLParserCompat.h
  129. +34 −0 thirdparts/ASIHTTPRequest/S3/ASIS3Bucket.h
  130. +40 −0 thirdparts/ASIHTTPRequest/S3/ASIS3Bucket.m
  131. +54 −0 thirdparts/ASIHTTPRequest/S3/ASIS3BucketObject.h
  132. +74 −0 thirdparts/ASIHTTPRequest/S3/ASIS3BucketObject.m
  133. +72 −0 thirdparts/ASIHTTPRequest/S3/ASIS3BucketRequest.h
  134. +175 −0 thirdparts/ASIHTTPRequest/S3/ASIS3BucketRequest.m
  135. +80 −0 thirdparts/ASIHTTPRequest/S3/ASIS3ObjectRequest.h
  136. +164 −0 thirdparts/ASIHTTPRequest/S3/ASIS3ObjectRequest.m
  137. +109 −0 thirdparts/ASIHTTPRequest/S3/ASIS3Request.h
  138. +312 −0 thirdparts/ASIHTTPRequest/S3/ASIS3Request.m
  139. +31 −0 thirdparts/ASIHTTPRequest/S3/ASIS3ServiceRequest.h
  140. +80 −0 thirdparts/ASIHTTPRequest/S3/ASIS3ServiceRequest.m
  141. +18 −0 thirdparts/ASIHTTPRequest/Tests/ASICloudFilesRequestTests.h
  142. +338 −0 thirdparts/ASIHTTPRequest/Tests/ASICloudFilesRequestTests.m
  143. +16 −0 thirdparts/ASIHTTPRequest/Tests/ASIDataCompressorTests.h
  144. +179 −0 thirdparts/ASIHTTPRequest/Tests/ASIDataCompressorTests.m
  145. +17 −0 thirdparts/ASIHTTPRequest/Tests/ASIDownloadCacheTests.h
  146. +562 −0 thirdparts/ASIHTTPRequest/Tests/ASIDownloadCacheTests.m
  147. +24 −0 thirdparts/ASIHTTPRequest/Tests/ASIFormDataRequestTests.h
  148. +299 −0 thirdparts/ASIHTTPRequest/Tests/ASIFormDataRequestTests.m
  149. +64 −0 thirdparts/ASIHTTPRequest/Tests/ASIHTTPRequestTests.h
  150. +2,001 −0 thirdparts/ASIHTTPRequest/Tests/ASIHTTPRequestTests.m
  151. +83 −0 thirdparts/ASIHTTPRequest/Tests/ASINetworkQueueTests.h
  152. +1,274 −0 thirdparts/ASIHTTPRequest/Tests/ASINetworkQueueTests.m
  153. +28 −0 thirdparts/ASIHTTPRequest/Tests/ASIS3RequestTests.h
  154. +860 −0 thirdparts/ASIHTTPRequest/Tests/ASIS3RequestTests.m
  155. +20 −0 thirdparts/ASIHTTPRequest/Tests/ASITestCase.h
  156. +23 −0 thirdparts/ASIHTTPRequest/Tests/ASITestCase.m
  157. +16 −0 thirdparts/ASIHTTPRequest/Tests/ASIWebPageRequestTests.h
  158. +41 −0 thirdparts/ASIHTTPRequest/Tests/ASIWebPageRequestTests.m
  159. +16 −0 thirdparts/ASIHTTPRequest/Tests/BlocksTests.h
  160. +105 −0 thirdparts/ASIHTTPRequest/Tests/BlocksTests.m
  161. +21 −0 thirdparts/ASIHTTPRequest/Tests/ClientCertificateTests.h
  162. +76 −0 thirdparts/ASIHTTPRequest/Tests/ClientCertificateTests.m
  163. +89 −0 thirdparts/ASIHTTPRequest/Tests/GHUnitTestMain.m
  164. +28 −0 thirdparts/ASIHTTPRequest/Tests/PerformanceTests.h
  165. +234 −0 thirdparts/ASIHTTPRequest/Tests/PerformanceTests.m
  166. +29 −0 thirdparts/ASIHTTPRequest/Tests/ProxyTests.h
  167. +203 −0 thirdparts/ASIHTTPRequest/Tests/ProxyTests.m
  168. +46 −0 thirdparts/ASIHTTPRequest/Tests/StressTests.h
  169. +192 −0 thirdparts/ASIHTTPRequest/Tests/StressTests.m
  170. +1 −0 thirdparts/JSONKit
  171. +374 −0 thirdparts/MBProgressHUD/MBProgressHUD.h
  172. +756 −0 thirdparts/MBProgressHUD/MBProgressHUD.m
View
@@ -1,4 +1,10 @@
-# WeiboSDKExample #
-新浪微博SDK示例,基于v2版API接口,对认证和请求进行了封装,包含最新微博列表、多帐号管理、发布文字微博、发布图片微博等功能示例。
+# WeiboSDK #
+新浪微博SDK,基于v2版API接口,对认证和请求进行了封装,
-详情请见:[WeiboSDKExample](https://github.com/JimLiu/WeiboSDK/tree/master/WeiboSDKExample "新浪微博SDK示例") 。
+## sample ##
+SDK应用示例(静态库引用),包含最新微博列表、多帐号管理、发布文字微博、发布图片微博等功能示例。
+详情请见:[sample](https://github.com/JimLiu/WeiboSDK/tree/master/sample "新浪微博SDK示例") 。
+
+## sample_nolib ##
+SDK应用示例(非静态库引用,代码引用),包含最新微博列表、多帐号管理、发布文字微博、发布图片微博等功能示例。
+详情请见:[sample](https://github.com/JimLiu/WeiboSDK/tree/master/sample_nolib "新浪微博SDK示例") 。
@@ -0,0 +1,16 @@
+//
+// AccountsViewController.h
+// ZhiWeiboPhone
+//
+// Created by junmin liu on 12-8-20.
+// Copyright (c) 2012年 idfsoft. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "WeiboSDK/WeiboSDK.h"
+
+@interface AccountsViewController : UITableViewController<WeiboSignInDelegate> {
+ WeiboSignIn *_weiboSignIn;
+}
+
+@end
@@ -0,0 +1,195 @@
+//
+// AccountsViewController.m
+// ZhiWeiboPhone
+//
+// Created by junmin liu on 12-8-20.
+// Copyright (c) 2012年 idfsoft. All rights reserved.
+//
+
+#import "AccountsViewController.h"
+
+@interface AccountsViewController ()
+
+@end
+
+@implementation AccountsViewController
+
+- (id)initWithStyle:(UITableViewStyle)style
+{
+ self = [super initWithStyle:style];
+ if (self) {
+
+ }
+ return self;
+}
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
+ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+ if (self) {
+ UIBarButtonItem *closeButton = [[[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStyleBordered target:self action:@selector(close:)] autorelease];
+ self.navigationItem.leftBarButtonItem = closeButton;
+
+ UIBarButtonItem *addButton = [[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(add:)] autorelease];
+ self.navigationItem.rightBarButtonItem = addButton;
+
+ self.title = @"Accounts";
+
+ _weiboSignIn = [[WeiboSignIn alloc] init];
+ _weiboSignIn.delegate = self;
+ }
+ return self;
+}
+
+- (void)dealloc {
+ [_weiboSignIn release];
+ [super dealloc];
+}
+
+- (IBAction)close:(id)sender {
+ [self dismissModalViewControllerAnimated:YES];
+}
+
+- (IBAction)add:(id)sender {
+ [_weiboSignIn signInOnViewController:self];
+}
+
+- (void)finishedWithAuth:(WeiboAuthentication *)auth error:(NSError *)error {
+ if (error) {
+ NSLog(@"failed to auth: %@", error);
+ }
+ else {
+ NSLog(@"Success to auth: %@", auth.userId);
+ [[WeiboAccounts shared]addAccountWithAuthentication:auth];
+ }
+ [self.tableView reloadData];
+}
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+
+ NSArray* toolbarItems = [NSArray arrayWithObjects:
+ self.editButtonItem,
+ nil];
+ self.toolbarItems = toolbarItems;
+ self.navigationController.toolbarHidden = NO;
+
+}
+
+- (void)viewDidUnload
+{
+ [super viewDidUnload];
+ // Release any retained subviews of the main view.
+ // e.g. self.myOutlet = nil;
+}
+
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
+{
+ return (interfaceOrientation == UIInterfaceOrientationPortrait);
+}
+
+#pragma mark - Table view data source
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+ return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+ return [[WeiboAccounts shared]accounts].count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ static NSString *CellIdentifier = @"WeiboAccountCell";
+
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (!cell) {
+ cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]autorelease];
+ }
+ WeiboAccount *account = [[[WeiboAccounts shared]accounts] objectAtIndex:indexPath.row];
+ NSString *name = account.screenName;
+ if (!name) {
+ name = account.userId;
+
+ UserQuery *query = [UserQuery query];
+ query.completionBlock = ^(WeiboRequest *request, User *user, NSError *error) {
+ if (error) {
+ //
+ NSLog(@"UserQuery error: %@", error);
+ }
+ else {
+ account.screenName = user.screenName;
+ account.profileImageUrl = user.profileLargeImageUrl;
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
+ (unsigned long)NULL), ^(void) {
+ [[WeiboAccounts shared]addAccount:account];
+ });
+ [self.tableView reloadData];
+ }
+ };
+ [query queryWithUserId:[account.userId longLongValue]];
+ }
+ cell.textLabel.text = name;
+ cell.accessoryType = account.selected ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;
+
+ return cell;
+}
+
+/*
+// Override to support conditional editing of the table view.
+- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ // Return NO if you do not want the specified item to be editable.
+ return YES;
+}
+*/
+
+
+// Override to support editing the table view.
+- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ if (editingStyle == UITableViewCellEditingStyleDelete) {
+ // Delete the row from the data source
+ WeiboAccount *account = [[[WeiboAccounts shared]accounts] objectAtIndex:indexPath.row];
+ [[WeiboAccounts shared] removeWeiboAccount:account];
+ [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
+ }
+ else if (editingStyle == UITableViewCellEditingStyleInsert) {
+ // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
+ }
+}
+
+
+/*
+// Override to support rearranging the table view.
+- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
+{
+}
+*/
+
+/*
+// Override to support conditional rearranging of the table view.
+- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ // Return NO if you do not want the item to be re-orderable.
+ return YES;
+}
+*/
+
+#pragma mark - Table view delegate
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+ return 52;
+}
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
+ WeiboAccount *account = [[[WeiboAccounts shared]accounts] objectAtIndex:indexPath.row];
+ [[WeiboAccounts shared] setCurrentAccount:account];
+ [self dismissModalViewControllerAnimated:YES];
+}
+
+@end
@@ -0,0 +1,39 @@
+//
+// ComposeViewController.h
+// SinaWeiboOAuthDemo
+//
+// Created by junmin liu on 11-1-4.
+// Copyright 2011 Openlab. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import <WeiboSDK/WeiboSDK.h>
+
+@interface ComposeViewController : UIViewController<WeiboRequestDelegate> {
+ UIBarButtonItem *btnSend;
+ UIBarButtonItem *btnCancel;
+ UIBarButtonItem *btnInsert;
+ UITextView *messageTextField;
+ UIView *sendingView;
+ UIImageView *attachmentImage;
+
+ NSString *_statusText;
+
+}
+
+@property (nonatomic, retain) IBOutlet UITextView *messageTextField;
+@property (nonatomic, retain) IBOutlet UIBarButtonItem *btnSend;
+@property (nonatomic, retain) IBOutlet UIBarButtonItem *btnCancel;
+@property (nonatomic, retain) IBOutlet UIBarButtonItem *btnInsert;
+@property (nonatomic, retain) IBOutlet UIView *sendingView;
+@property (nonatomic, retain) IBOutlet UIImageView *imgAttachment;
+
+@property (nonatomic, copy) NSString *statusText;
+
+- (IBAction)send:(id)sender;
+
+- (IBAction)cancel:(id)sender;
+
+- (IBAction)insert:(id)sender;
+
+@end
Oops, something went wrong.

0 comments on commit 522a037

Please sign in to comment.