我想弄清楚我是否可以在目标c中使用点语法来访问类变量.
例如,如果我有一个名为ClassA的类,类型为NSObject.
ClassA有一个名为ClassB的类的实例,类型也是NSObject.
ClassB有一个名为myString的变量,类型为NSString;
在具有ClassA实例作为变量的视图控制器中,我试图通过说法来访问"myString"
NSString *aString=classA.classB.myString;
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误
error: accessing unknown 'myString' component of a property
Run Code Online (Sandbox Code Playgroud)
如果可以使用点语法访问classB,为什么不能使用字符串变量?
///////////添加编辑//////////
抱歉耽搁了.评论框也只允许这么多字符,所以我不得不使用anser框.
#import <Foundation/Foundation.h>
@class PromoTrackValueObject;
@class PromoMixValueObject;
@class PromoSkinValueObject;
@class EventsValueObject;
@class BuyValueObject;
@interface PromoValueObject : NSObject {
NSString *promoXMLPath;
NSString *type;
NSString *username;
NSString *entityname;
NSString *userid;
NSString *hasavatar;
NSString *trackbuy_profile;
NSString *bio;
NSString *country;
NSString *url_facebook;
NSString *url_twitter;
NSString *url_discog;
NSString *url_myspace;
NSString *url_chart;
NSString *labelname;
NSString *labelurl;
NSString *labelimg;
NSString *agent_name;
NSString *agent_url;
NSString *agent_img;
NSString *promo_date;
PromoTrackValueObject *promoTrack; …
Run Code Online (Sandbox Code Playgroud) 在asp.net中,LCID 127所代表的文化是什么?
<%Response.Write(System.Globalization.CultureInfo.InvariantCulture.LCID)%>
Run Code Online (Sandbox Code Playgroud)
输出= 127.
我只是想尝试使用新版本重新进入.NET MVC,我无法理解视图是否绑定到DataModel.
我有一个带有属性"first_name"的模型,在HTML表单中我有以下内容
<%= Html.TextBox("first_name", Model.first_name)%>
<%= Html.TextBoxFor(model => model.first_name) %>
<input type="text" name="first_name" id="first_name" class="myLabel"
value="<%=Model.first_name %>" />
Run Code Online (Sandbox Code Playgroud)
在控制器上的操作中,如果我在模型上设置first_name属性并执行此操作
mymodelObject.first_name = "Test";
return View(mymodelObject);
Run Code Online (Sandbox Code Playgroud)
是什么原因只有第三个文本框获取此first_name值而另外两个没有?
编辑:
对不起,我可能还没有解释得这么好.想象一下,我有2个控制器方法 -
public ActionResult Register()
{
Registration model = new Registration();
model.first_name = "test";
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
有了这个,任何一个绑定工作.
在显示之后,我单击表单上的一个按钮,然后尝试运行:
[HttpPost]
public ActionResult Register(Registration_ViewData model)
{
model.first_name = "Steve";
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
我问的是为什么第3个而不是第2个以"Steve"作为新名称.
我有一个问题要澄清我对C++中计算机内存组织的困惑.
在C++中,不同的数据放在不同的位置.我的理解是这样的.
1)数据段部分,其中包含全局和静态数据;
2)堆节,由new创建的对象
3)堆栈部分,局部变量
4)文本部分,代码本身.
是对的吗?有什么我错过或做错了吗?
谢谢!
有没有让jEdits键盘控件的行为与原生Mac OS应用程序相同?
通过表现我的意思是命令+左移动插入符号到行的开头,alt + left移动到当前单词的开头等.
我有一个类API,它具有完整的代码覆盖率,并使用DI来模拟主类函数(Job.Run)中的所有逻辑,它完成所有工作.
我在生产中发现了一个错误,我们没有对其中一个数据输入字段进行验证.
所以,我添加了一个名为ValidateFoo()的存根函数...对这个函数写了一个单元测试来预测一个JobFailedException,运行测试 - 它明显失败,因为该函数是空的.我添加了验证逻辑,现在测试通过了.
太好了,现在我们知道验证工作了.问题是 - 如何编写测试以确保在Job.Run()中实际调用ValidateFoo()?ValidateFoo()是Job类的私有方法 - 因此它不是接口...
无论如何用NMock2.0做到这一点?我知道TypeMock支持非接口类型的假货.但是现在改变模拟库不是一种选择.此时如果NMock不支持它,我只需将ValidateFoo()调用添加到Run()方法并手动测试 - 显然我不想考虑我的Job.Run()方法现在100%覆盖.任何建议?非常感谢,非常感谢.
编辑:我想到的另一个选择是为我的Job.Run功能创建一个集成测试(向它注入复合对象的真实实现而不是模拟).我将为该字段给它一个错误的输入值,然后验证作业失败.这工作并涵盖了我的测试 - 但它不是真正的单元测试,而是测试一个功能单元的集成测试....嗯..
EDIT2:有没有办法做什么?有人有想法吗?也许TypeMock - 或更好的设计?
最近我一直在让MySQL挂起特定的查询.我有一张500,000多条记录的表格.以下是正在运行的查询:
SELECT*FROM
items
WHERE(itemlist_id = 115626)ORDER BY tableOrder DESC LIMIT 1
这是解释:
| 1 | 简单| 物品| 所有| NULL | NULL | NULL | NULL | 587113 | 用在哪里; 使用filesort |
这是process_list条目:
| 252996 | 根| localhost | itemdb | 查询| 0 | 排序结果| SELECT*FROM
items
WHERE(itemlist_id = 115642)ORDER BY tableOrder DESC LIMIT 1 |
知道什么可能导致此查询需要10分钟处理?当我手动运行时,它很快就完成了.(1排(0.86秒))
谢谢
我正在使用'滚动'cURL多实现(就像这篇SO帖子,基于这个cURL代码).它可以同时使用多达100个请求来处理数千个URL,其中5个脚本实例作为守护进程运行(是的,我知道,这应该用C语言编写).
这是问题:处理完~200,000 url(在5个实例中)curl_multi_exec()
似乎打破了脚本的所有实例.我已经尝试关闭脚本,然后重新启动,同样的事情发生(不是在200,000网址后,但在重新启动时),脚本挂起调用curl_multi_exec()
.
我把脚本放到'单一'模式,处理一个常规的cURL句柄,并且工作正常(但它不是我需要的速度).我的日志记录让我怀疑它可能遇到了缓慢/有问题的连接(因为它似乎经常在URL上处理然后再次挂起),但这意味着我CURLOPT_TIMEOUT
的个别句柄被忽略了.或者也许只是通过cURL运行那么多请求的东西.
有人听说过这样的事吗?
示例代码(再次基于此):
//some logging shows it hangs right here, only looping a time or two
//so the hang seems to be in the curl call
while(($execrun =
curl_multi_exec($master, $running)) == CURLM_CALL_MULTI_PERFORM);
//code to check for error or process whatever returned
Run Code Online (Sandbox Code Playgroud)
我已CURLOPT_TIMEOUT
设置120
,但在curl_multi_exec()
最终返回一些数据的情况下,它是在等待10分钟后.
我有一堆测试/检查还没有做,但想到也许这可能会敲响一个人.
我想我过去一年半的iPhone开发经历一直都是这样做的...我可以使用一些知识渊博的澄清!
正如您可能知道或不知道的那样,使用该beginAnimations:forContext:
方法可以很容易地动画UIView属性,并通过commitAnimations
调用将其包装起来.
您还可以设置动画委托,以便在动画的某些部分出现时执行操作,例如开始,结束等.
我已经在我的代码中使用了UIView动画很长一段时间并且从来没有遇到任何严重的问题,但我只是遇到了一些我一定错过的文档部分.
UIView的文档setAnimationDidStopSelector:
声明传入此方法的任何选择器应采用以下形式:
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context;
Run Code Online (Sandbox Code Playgroud)
我根本没有这样做过.我一直在设置不带参数的普通旧doThis
和doThat
类型选择器.
我一直在接受什么?我应该重写我的所有代码以使用记录的表单吗?或者,如果我需要知道动画是否在停止之前完成或者需要将一些特定于上下文的数据传递给方法,那么这个形式是为了方便吗?