我们都知道Objective-C++是如何记录在案的.我找不到任何相关内容,但我也发现很难找到合适的明确搜索词.所以,Stackoverflow来救援(我希望)!
我有一个C++类,我在Objective-C(++)类中有一个实例(我启用了项目设置,可以调用构造函数/析构函数).
这一切都正常,直到我尝试通过@synthesized属性公开实例.我把它作为一个assign属性(因为Obj-C保留计数不适用).该属性似乎工作,除非我设置实例,我希望涉及复制构造函数.我实际看到的是创建了一个临时实例(在其上调用了复制构造函数) - 这是所有预期的.但是没有调用ivar实例上的复制构造函数.这些值是"神奇地"设置的.我假设@synthesized代码正在做memcpy最后一步.这对于C structs 来说很好,但对C++没那么有用classes代码的正确性取决于正确调用的复制构造函数和赋值运算符.
有没有人更深入地研究过它,让它工作,或者确认不可能在Obj-C(++)类中将C++对象保存为ivars并且具有由@synthesized属性设置器调用的复制构造函数?
(如果有必要,我可以发布所有这些的示例代码 - 但即使是最小版本也是一个屏幕左右).
#include "stdio.h"
#include "conio.h"
void swap(int *x,int *y);
void main()
{
int a=10,b=20;
swap(a,b);
printf("value of a=%d and b=%d");
getch();
}
void swap(int *x,int *y)
{
if(x!=y)
{
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
}
Run Code Online (Sandbox Code Playgroud)
//我正在......无法将int转换为int*...
任何人都可以告诉我为什么这样.以及如何解决它.
希望得到快速和积极的回应.
我担心的是我正确添加对象并释放它们.
如何正确保留和释放?
NSMutableArray *listData = [[NSMutableArray alloc] init];
int i = 0;
for (i = 0; i < 3; i++)
{
MyData *obj = [[MyData alloc] init];
NSString *name = nil;
switch (i)
{
case 0:
name = @"Semen";
break;
case 1:
name = @"Ivan";
break;
case 2:
name = @"Stepan";
break;
default:
break;
}
obj.name = name;
[listData addObject: obj];
[obj release];
}
[listData release] //in dealloc method
Run Code Online (Sandbox Code Playgroud)或者我需要首先释放所有包含的对象,而不是在NSMutableArray对象上释放?
谢谢!
有没有办法用objective-c创建一个Singleton模式,这将使客户端代码能够获得任何子类的共享实例?
我试过了:
@interface Base : NSObject {}
+(id)instance;
@end
@implementation Base
static id _instance;
+(id)instance {
if (!_instance) {
_instance = [[self alloc] init];
}
return _instance;
}
@end
Run Code Online (Sandbox Code Playgroud)
但是调用任何子类[AmazingThing instance]只会返回通过此机制创建的第一个实例,无论它是什么类型_instance.任何干净的解决方法?
编辑
我意识到(在回复已删除的答案时)我可以通过将实现更改为:
static NSMutableDictionary *_instances;
+(id)instance {
if (!_instances) {
_instances = [[NSMutableDictionary alloc] init];
}
id instance = [_instances objectForKey:self];
if (!instance) {
instance = [[self alloc] init];
[_instances setObject:instance forKey:self];
}
return instance;
}
Run Code Online (Sandbox Code Playgroud)
它现在按预期工作.不过,我很想知道是否有更好的方法来做到这一点.
尝试
<script type="text/javascript">
var str=">1 people>9 people>1u people";
document.write(str.match(/>.*people/img).length);
</script>
Run Code Online (Sandbox Code Playgroud)
在http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_regexp_dot.此代码应返回大小为3的数组,但它返回大小为1的数组.
问题出在哪儿?
我有这个令人困惑的错误。我通过 GET 方法发送 JSON,网站将解析并显示数据。问题是我收到错误“NSURLErrorDomain Code -1000”或更简单的“Bad URL”。问题是,当我检查服务器时,我发送的数据已成功解析并显示。所以我真的很困惑为什么我会收到这个“错误的 URL”错误。有人能帮我吗?
这是我收到的错误:
错误域=NSURLErrorDomain代码=-1000“错误的URL”UserInfo=0xff73df0 {NSUnderlyingError=0xff73810“错误的URL”,NSLocalizedDescription=错误的URL}
编辑:
http://sample.com/imwebjson.php?sid=5amp13&job=sendNotes&im_flds={\"im_uid\":"1",\"im_bookid\":"57",\"im_pagenr\":"1",\"im_notes\":"Testing%5C%5Cn"}
Run Code Online (Sandbox Code Playgroud)
好吧,您可能会问为什么 JSON 字符串的某些部分已经被编码了。这些编码部分是特殊字符。我意识到 stringByAddingPercentEscapesUsingEncoding 非常不完整。它不会对所有特殊字符进行编码,更重要的是,当它对某些特殊字符进行编码时,URL根本无法被识别。所以我决定手动将特殊字符编码到字符串中。
我注意到在windows和linux x86上,float是4bytes,double是8,但long xins分别是x86和x86_64上的12和16.C99应该用特定的整体尺寸打破这种障碍.
最初的技术限制似乎是由于x86处理器无法处理超过80位的浮点运算(加上2个字节来进行舍入),但为什么标准与int类型相比不一致?他们为什么不至少达到80bit标准化?
我收到一个错误'尝试使用appendString来改变不可变对象:'
我的代码是
NSMutableString *resultString= [[NSMutableString alloc]init];
for (NSMutableString *s in self.ArrayValue)
{
[resultString appendString:s];
NSLog(resultString);
}
Run Code Online (Sandbox Code Playgroud)
ArrayValue是NSMutableArray.
我无法理解问题出在哪里
先感谢您
你能解释一下我是AppKit线程安全吗?我在哪里可以阅读它?(除了线程编程指南,因为此文档创建了更多问题而不是答案).例如,我可以在分离的线程中验证NSToolbar的voidVisibleItems吗?或者我可以在第二个线程中增加NSProgressIndicator的值吗?
我正在使用客观的C JSON解析库并面临一些问题.我的Web服务返回JSON响应.当响应字符串中有转义字符时,My Parser失败.以下是我从服务器收到的回复.
现在,如果您观察"item_name"行:"花费$ 10andget $ 24worthofdonuts fromJim \'sDonutShop",就会有一个逃脱角色Jim \'Donut.My Parser无法解析此异常.
-JSONValue failed. Error trace is: (
"Error Domain=org.brautaset.JSON.ErrorDomain Code=8 \"Illegal escape sequence '0x27'\" UserInfo=0x79cc420 {NSLocalizedDescription=Illegal escape sequence '0x27'}",
"Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: item_name\" UserInfo=0x79cc510 {NSUnderlyingError=0x79cc470 \"Illegal escape sequence '0x27'\", NSLocalizedDescription=Object value expected for key: item_name}",
"Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: parameters\" UserInfo=0x79cc5c0 {NSUnderlyingError=0x79cc540 \"Object value expected for key: item_name\", NSLocalizedDescription=Object value expected for key: parameters}"
Run Code Online (Sandbox Code Playgroud)
我正在使用的是JSON.h
NSDictionary * responseDic …Run Code Online (Sandbox Code Playgroud)