gaosboy

gaosboy 查看完整档案

杭州编辑华东理工大学  |  计算机科学与技术 编辑阿里巴巴  |  技术专家 编辑 gaosboy.com 编辑
编辑

玩Linux-shell-php-java-objc-perl-mysql,没谱的青年,会写代码的猪,资深80后

个人动态

gaosboy 回答了问题 · 2016-12-06

GCDAsyncsocket 放到子线程总会不不执行,这是怎么回事

代码和日志不完整,看不出什么原因。猜测原因两个:

  1. 其实还咋执行,但是调试的问题你抓不到状态了

  2. 真的被中断了,具体原因要深究,不过建议你把queue做一个引用,长期持有,不作为局部变量,如果局部变量那么做一个串行队列的意义在哪里?

关注 3 回答 2

gaosboy 关注了问题 · 2016-12-06

GCDAsyncsocket 放到子线程总会不不执行,这是怎么回事

GCDAsyncsocket 使用异步串行子线程中for循环执行一半就不执行了,代码如下,过程是点击发送按钮返回到主页面,然后异步执行下面的代码上传图片;

    
    - (void)sendAction{
      dispatch_queue_t queue = dispatch_queue_create("uploadImage", DISPATCH_QUEUE_SERIAL);
         dispatch_async(queue, ^{
       for (int i =0; i < 10; i++) {
              
         NSLog(@"async ------------ %@", [NSThread currentThread]);
        
        //第一张图的资源
        PHAsset *asset = self.sendImageArray[i];
        NSString *fileType;
        NSString *fileName;
      
        if (asset.mediaType == PHAssetMediaTypeImage) {
            fileType = @"jpg";
            NSData *data = [NSData dataWithContentsOfFile:filePath[i]];

            [self upLoadImageData:data type:@"jpg" name:fileName];
        } else if(asset.mediaType == PHAssetMediaTypeVideo) {
            fileType = @"mp4";
              NSData *data = [NSData dataWithContentsOfFile:filePath[i]];
            [self uploadMp4Data:data type:fileType name:fileName];
            
        }       
  }
  });
  }
  
  - (void)upLoadImageData:(NSData*)data  type:(NSString *)fileType name:(NSString *)fileName{
     dataNameMutStr = [NSMutableString stringWithFormat:@"ios_%@_%@.jpg\n", @"图片",fileName];
   NSData *dataName = [dataNameMutStr dataUsingEncoding:NSUTF8StringEncoding];
   [self sendSocket:dataName data:data];
   }
   
   
   - (void)sendSocket:(NSData *)dataName data:(NSData *)datas{
     [self createClientTcpSocket];//发图片
     [_asyncsocket writeData:datas withTimeout:-1 tag:0];

   }

关注 3 回答 2

gaosboy 评论了回答 · 2014-09-16

如何用PHP匹配并替换iOS标准的emoji表情符号

gaosboy 收藏了问题 · 2014-09-09

XCTest 异步返回测试用例的问题

Xcode 6,OSX SDK 10.0,系统是10.9

代码:

-(void)testSearchMusic {
    XCTestExpectation *expectation = [self expectationWithDescription:@"searchMusic"];
  [musicSDK searchMusicWithKw:@"回家"
                        block:^(NSArray *list){
                          XCTAssert(list, @"pass");
                          [expectation fulfill];
                        }];

    [self waitForExpectationsWithTimeout:10
                                 handler:nil];

}

执行测试用例的时候,提示:

test failure: -[NetEaseMusicSDKTests testSearchMusic] failed: failed: caught "NSInvalidArgumentException", "*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[4]"

求助

gaosboy 评论了回答 · 2014-09-03

GET如何以BODY传输?

gaosboy 评论了回答 · 2014-09-03

GET如何以BODY传输?

gaosboy 回答了问题 · 2014-09-03

GET如何以BODY传输?

理论上GET和POST没有本质区别,所以建议用POST做。

另,如果一定要用GET,建议把要传输的数据放在同一个对象里,例如你要传输的内容是:

http://example.com/api?paramA=valueA&paramB=ValueB&paramC=ValueC

则可以先构建要传输的对象(举例用JSON格式,其他格式也无所谓):

{"paramA":"valueA","paramB":"valueB","paramC":"valueC"}

然后对这个对象加密,比如得到密文:

uyUYbJhkIU*^GmklJL(Tu6RJHGHYRhgV$6U%&^%M<HJFHGFjJHGjgj

再做URL Encode,传输:

http://example.com/api?data=uyUYbJhkIU%2A%5EGmklJL%28Tu6RJHGHYRhgVU%25%26%5E%25M%3CHJFHGFjJHGjgj

关注 1 回答 3

gaosboy 回答了问题 · 2014-09-01

上传图片的逻辑处理

针对你提出的这些问题,我觉得最佳解决方案就是独立于博客文章,做一个附件管理的页面,让作者管理当下他上传过的所有图片,在这个页面列出哪些图片被引用过。

另外,我认为图片地址占用的空间可以忽略不计;图片文件本身不太建议放自己硬盘,又拍云什么的很好。

另外有一个重要原则是,不到万不得已不删除

关注 0 回答 3

gaosboy 赞了回答 · 2014-07-29

下通过消息方式实现界面解耦有什么优势

  1. 我觉得在你的这种情况下是差不多的,如果一个ID就能代表一个界面或者一个界面元素的调用
  2. ReactiveCocoa不是有几个经典的例子么,当一个界面上的元素有多种依赖的时候,ReactiveCocoa的写法还是很舒服的,比如当两个事件触发以后才会引起一个界面的更新,你就要去写一个逻辑对这两个ID做监测
  3. 各种异步的时候不用自己去写回调,block什么的,直接用事件,更正一下,不是说不用写逻辑,是这种方式看起来更直接

关注 0 回答 2

gaosboy 赞了回答 · 2014-07-29

下通过消息方式实现界面解耦有什么优势

消息相对来讲,伸缩性和灵活性比传统的通过抽象ID更好吧。而且,不同界面相关的逻辑可以控制在最小范围内,只要实现对应的observer或者consumer就行了。避免静态对象的共享。而且,不同线程之间数据交换,也不容易出现异常。

关注 0 回答 2

认证与成就

  • 获得 268 次点赞
  • 获得 57 枚徽章 获得 6 枚金徽章, 获得 26 枚银徽章, 获得 25 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2011-04-27
个人主页被 3.9k 人浏览