我在以下类型的代码中不断出现Clang错误,我无法弄清楚为什么它们是错误的或如何解决它们让Clang满意:
+ (NSString *)checkForLength: (NSString *)theString error: (NSError **)error {
BOOL hasLength = ([theString length] > 0);
if (hasLength) return theString;
else {
*error = [NSError errorWithDomain:@"ErrorDomain" code:hasLength userInfo:nil];
return nil;
}
}
Run Code Online (Sandbox Code Playgroud)
撇开这个例子的完全人为的性质(Clang确实反对,所以它足够说明),Clang在错误分配线上喋喋不休地提出以下异议:
潜在的空取消引用.根据"创建和返回
NSError对象"中的编码标准,参数"错误"可以为空.
我喜欢原始的Clang报告.我已经阅读了所引用的文件,我看不到做出预期的方法; 我检查了一些开源的Cocoa库,这似乎是一个常见的习惯用法.有任何想法吗?
我有以下JSON:
[{
"name": "numToRetrieve",
"value": "3",
"label": "Number of items to retrieve:",
"items": {
"1": "1",
"3": "3",
"5": "5"
},
"rules": {
"range": "1-2"
}
},
{
"name": "showFoo",
"value": "on",
"label": "Show foo?"
},
{
"name": "title",
"value": "Foo",
"label": "Foo:"
}]
Run Code Online (Sandbox Code Playgroud)
所有在一个行版本(适用于字符串文字):
[{\"name\":\"numToRetrieve\",\"value\":\"3\",\"label\":\"Number of items to retrieve:\",\"items\":{\"1\":\"1\",\"3\":\"3\",\"5\":\"5\"},\"rules\":{\"range\":\"1-2\"}},{\"name\":\"showFoo\",\"value\":\"on\",\"label\":\"Show foo?\"},{\"name\":\"title\",\"value\":\"Foo\",\"label\":\"Foo:\"}]
Run Code Online (Sandbox Code Playgroud)
在上述例子中,name,value,和label被需要的,但是items和rules是可选的.
这是我试图反序列化的类:
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace foofoo
{
[DataContract]
public sealed class FooDef
{
[DataMember(Name = …Run Code Online (Sandbox Code Playgroud) 到目前为止,我已经花了两天时间来处理这个问题,并且可以根据我的需要进行梳理,所以这是最后的选择.
我有一个X509证书,其公钥存储在iPhone的钥匙串中(此时仅为模拟器).在ASP.NET方面,我在证书库中获得了带有私钥的证书.当我在iPhone上加密字符串并在服务器上解密时,我收到CryptographicException"错误的数据".我尝试了Array.Reverse在RSACryptoServiceProvider页面上建议的远景,但它没有帮助.
我比较了两侧的64弦,它们是相同的.我在解码后比较了原始字节数组,它们也相等.如果我使用公钥在服务器上加密,则字节数组与iPhone的版本不同,并且可以使用私钥轻松解密.原始明文字符串是115个字符,因此它在我的2048位密钥的256字节限制范围内.
这是iPhone加密方法(几乎是CryptoExercise示例应用程序的wrapSymmetricKey方法):
+ (NSData *)encrypt:(NSString *)plainText usingKey:(SecKeyRef)key error:(NSError **)err
{
size_t cipherBufferSize = SecKeyGetBlockSize(key);
uint8_t *cipherBuffer = NULL;
cipherBuffer = malloc(cipherBufferSize * sizeof(uint8_t));
memset((void *)cipherBuffer, 0x0, cipherBufferSize);
NSData *plainTextBytes = [plainText dataUsingEncoding:NSUTF8StringEncoding];
OSStatus status = SecKeyEncrypt(key, kSecPaddingNone,
(const uint8_t *)[plainTextBytes bytes],
[plainTextBytes length], cipherBuffer,
&cipherBufferSize);
if (status == noErr)
{
NSData *encryptedBytes = [[[NSData alloc]
initWithBytes:(const void *)cipherBuffer
length:cipherBufferSize] autorelease];
if (cipherBuffer)
{
free(cipherBuffer);
}
NSLog(@"Encrypted text (%d …Run Code Online (Sandbox Code Playgroud) 我有一个标准UITableViewCell,我正在使用文本和图像属性来显示favicon.ico和标签.在大多数情况下,这非常有效,因为UIImage支持ICO格式.但是,有些网站(如Amazon.com所说)有favicon.ico利用ICO格式在同一文件中存储多种尺寸的能力.亚马逊存储四种不同的尺寸,一直到48x48.
这导致大多数图像为16x16,除了少数以32x32或48x48进入并使一切看起来很糟糕.我在这里搜索过,官方论坛,文档和其他地方没有成功.我已经尝试了一些我能想到的约束图像尺寸的东西.唯一有效的是一个未记录的方法,我不打算使用它.这是我的第一个应用程序和我第一次使用Cocoa(来自C#).
如果我不清楚我在寻找什么,理想情况下,建议将围绕设置尺寸,UIImage以便48x48版本可以缩小到16x16或者告诉UIImage使用ICO中存在的16x16版本的方法文件.我不一定需要代码:只是建议一种方法对我没问题.
有没有人有什么建议?(我在官方论坛上也问过,因为我已经沉迷了一天以上.如果在那里发布了解决方案,我也会把它放在这里.)
我是从C#来到Objective-C而没有任何C语言的中间知识.(是的,是的,我需要在某些时候学习C并且我完全打算这样做.)在Apple的证书,密钥和信任服务编程指南中,那里是以下代码:
static const UInt8 publicKeyIdentifier[] = "com.apple.sample.publickey\0";
static const UInt8 privateKeyIdentifier[] = "com.apple.sample.privatekey\0";
Run Code Online (Sandbox Code Playgroud)
我有一个NSString我想在这里使用的标识符,对于我的生活,我无法弄清楚如何将其纳入这个数据结构.通过谷歌搜索也没有结果.我看着NSString类参考,看着UTF8String和getCharacters方法,但我不能让产品进入结构.
我错过了什么简单易行的技巧?
c# ×2
cocoa ×2
iphone ×2
objective-c ×2
cocoa-touch ×1
constants ×1
dictionary ×1
encryption ×1
favicon ×1
json ×1
nsstring ×1
rsa ×1
string ×1
uikit ×1
wcf ×1