小编Don*_*hey的帖子

何时使用限制,何时不使用

restrict对此有一个大致的了解,但我希望澄清一些细节.我有一个函数从一个缓冲区读取一个以null结尾的字符串,并在另一个缓冲区中写出一个URL编码的版本.该函数具有此签名(当前没有restrict):

char const *StringUrlEncode(char const *unencoded, 
                            char *encoded,
                            char *encodedEnd);
Run Code Online (Sandbox Code Playgroud)

unencoded是我的以null结尾的源字符串.目标缓冲区由encoded和表示encodedEnd,其中encoded指向char缓冲区encodedEnd中的第一个并指向缓冲区的第一个字符,即函数将写入char不包括指向的位置encodedEnd- 这是您的基本begin/ end迭代器如果您熟悉C++ STL约定,请配对.

如果我添加restrict到此函数,它应该只应用于前两个参数:

char const *StringUrlEncode(char const *restrict unencoded, 
                            char *restrict encoded,
                            char *encodedEnd);
Run Code Online (Sandbox Code Playgroud)

或者通过将它添加到所有三个参数中我是否有一些好处?

我可以看到制作输入和输出缓冲区restrict有助于编译器知道它们不重叠.但是由于最后一个参数,encodedEnd仅用于标记输出缓冲区的结尾,我认为这restrict对编译器没有任何帮助(虽然我认为它不会受到伤害,除了添加不必要的噪声到函数声明).

c pointers c99 restrict-qualifier

23
推荐指数
2
解决办法
7517
查看次数

如何在Safari中的<canvas>标签上绘制文本

我一直在尝试使用<canvas>标签绘制简单的图表和图表,到目前为止,它很容易使用.我想到了一个问题.我无法弄清楚如何<canvas>在Safari中绘制文本.在Firefox 3.0中,我可以这样做:

Chart.prototype.drawTextCentered = function(context, text, x, y, font, color) {
  if (context.mozDrawText) {
    context.save();
    context.fillStyle = color;
    context.mozTextStyle = font;
    x -= 0.5 * context.mozMeasureText(text);
    context.translate(x, y);
    context.mozDrawText(text);
    context.restore();
  }
}
Run Code Online (Sandbox Code Playgroud)

我已经看到fillText()了Apple的Safari文档中的方法,但它似乎在Safari 3.2中不受支持.这只是目前缺失的东西,还是一些保密的秘密?

javascript safari canvas

12
推荐指数
1
解决办法
2万
查看次数

我应该保存NSLocalizedString()返回的字符串吗?

我正在开发一款iPhone应用程序,我们在初始版本中使用英语和日语进行本地化.我们经常调用NSLocalizedString()加载适当的本地化字符串进行显示.通常情况下,将本地化字符串保存在实例变量中是为了下次我们需要它们,或者我是否在这里进行微优化,我是否应该在每次需要时重新加载字符串?

iphone cocoa cocoa-touch

5
推荐指数
2
解决办法
1766
查看次数

为什么我的UIImageView不响应水龙头?

我有一个从NIB加载的UIImageView.我已经连接了一个手势识别器来处理水龙头,但是当我运行应用程序时,没有检测到水龙头.

iphone cocoa-touch interaction gesture-recognition uiimageview

5
推荐指数
1
解决办法
1388
查看次数

是否有可能检测到蜂窝网络是否可用?

我正在研究iPhone应用程序,我希望能够检查手机是否能够拨打电话(如果没有,则警告用户).这可能是由于没有可用的蜂窝服务或用户将电话置于"飞行模式".

我查看了Apple的文档,我找不到任何可以让我查看的内容.我错过了什么,或Apple没有将此信息公开给应用程序?

编辑:只是要强调,我对检查IP网络连接不感兴趣,但想确定我的应用是否可以拨打电话.

iphone cocoa-touch

4
推荐指数
1
解决办法
4501
查看次数

有人可以向我解释这些错误吗?

我得到这些奇怪的错误,但我不理解它们.以下是错误:

错误:可能无法初始化变量大小的对象(#1)

错误:静态分配的Objective-C类实例'笑话'(#1)

错误:静态分配的Objective-C类实例'笑话'(#1)

错误:无法转换为指针类型(#2)

(注意:错误后面的数字将指示错误在我的实现文件中的位置)

这是我的.m文件:

#import "Joke.h"


@implementation Joke
@synthesize joke;
@synthesize rating;


- (id)init {
[super init];
return self;
}

- (void)dealloc {
[joke release];
[super dealloc];    
}

+ (id)jokeWithValue:(NSString *)joke {
Joke j = [[Joke alloc] init]; // (# 1) This is where #1 errors occurred
j.joke = joke;
return [j autorelease]; // (# 2) This is where #2 errors occurred
 }

@synthesize joke;
@synthesize rating;

@end
Run Code Online (Sandbox Code Playgroud)

谢谢!

iphone cocoa-touch objective-c

2
推荐指数
2
解决办法
5578
查看次数

与char*冲突的类型

我有一个小程序来测试传入和传出函数的char*指针.当我用cc编译时,我得到警告和错误,说我有相互冲突的类型,即使我的所有变量都是char*.请指教

#include <stdio.h>

main()
{
    char* p = NULL;

    foo1(p);
    foo2();
}

void foo1(char* p1)
{
}

char* foo2(void)
{
    char* p2 = NULL;

    return p2;
}

p.c:11: warning: conflicting types for ‘foo1’
p.c:7: warning: previous implicit declaration of ‘foo1’ was here
p.c:15: error: conflicting types for ‘foo2’
p.c:8: error: previous implicit declaration of ‘foo2’ was here
Run Code Online (Sandbox Code Playgroud)

c pointers function

1
推荐指数
1
解决办法
4800
查看次数