微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iphone位于ob_msgSend的KERN_PROTECTION_FAILURE

如何解决iphone位于ob_msgSend的KERN_PROTECTION_FAILURE

| 我很确定KER_PROTECTION_FAILURE由于以下代码而发生。 (当我跳过调用函数时,我没有收到错误) 我怀疑以下代码错误的吗? (数据可以在释放字符串对象之前消失,或类似的东西)
NSMutableData* data = [NSMutableData dataWithLength: dataLength];
// populate data 
return [[[Nsstring alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease];
寄存器$ r0显示返回的Nsstring对象的地址。 $ r1显示\“ release \”。
 - (Nsstring *)encode:(const uint8_t *)input length:(NSInteger)length {
     static char table[] = \"ABCDEFGHIJKLMnopQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";

     int dataLength = ((length+2)/3)*4;
     int remainder = dataLength % 16;
     dataLength = dataLength + (16- remainder);

     NSMutableData *data = [NSMutableData dataWithLength:
 dataLength];
     uint8_t *output = (uint8_t *)data.mutableBytes;

     for (NSInteger i = 0; i < length; i += 3) {
         NSInteger value = 0;
         for (NSInteger j = i; j < (i + 3); j++) {
             value <<= 8;

             if (j < length) {
                 value |= (0xFF & input[j]);
             }
         }

         NSInteger index = (i / 3) * 4;
         output[index + 0] =                    table[(value >> 18) & 0x3F];
         output[index + 1] =                    table[(value >> 12) & 0x3F];
         output[index + 2] = (i + 1) < length ? table[(value >> 6)  & 0x3F] :
 \'=\';
         output[index + 3] = (i + 2) < length ? table[(value >> 0)  & 0x3F] :
 \'=\';
     }

     return [[[Nsstring alloc] initWithData:data
 encoding:NSASCIIStringEncoding]
 autorelease]; }
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。