我现在从几个来源(stackoverflow.com,cocoa-dev,文档,博客等)中听到,在init和dealloc方法中使用访问器和设置(foo,setFoo :)是"错误的".据我所知,如果你这样做,很可能会混淆其他正在观察财产的物体.(这里给出一个简单的例子)
但是,由于以下原因,我不得不说我不同意这种做法:
新的Objective-C运行时(iPhone上的那个和10.5中的64位运行时)允许您在不声明相应的ivar的情况下声明属性.例如,以下类将在10.5或iPhone(设备,而不是模拟器)上编译得很好:
@interface Foo : NSObject { }
@property (retain) id someObject;
@end
@implementation Foo
@synthesize someObject;
@end
Run Code Online (Sandbox Code Playgroud)
理解上面是一个完全有效的Objective-C类,假设我决定编写一个初始化程序,并且出于内存管理的目的,使用dealloc方法(因为在iPhone上没有GC).我读过有关初始化器和释放器的所有内容都会让我编写以下两种方法:
- (id) init {
if (self = [super init]) {
//initialize the value of someObject to nil
[self setSomeObject:nil];
}
return self;
}
- (void) dealloc {
//setting someObject to nil will release the previous value
[self setSomeObject:nil];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
但是,根据文件和流行的观点,这是"错误的".所以我的问题是这样的:
如果其中任何一个的答案是"你不能",那么在init和dealloc方法中使用访问器怎么可能不好?
我意识到这是大多数操作系统中的程序切换器键组合.是否有可能通过JavaScript在网页中捕获此类事件?
我有IE7的问题.
我有一个固定的布局,用于保持标题和侧面板固定在页面上,只留下"主要内容"区域开关可以愉快地滚动它的内容.
Twitpic上的布局http://twitpic.com/show/thumb/e32q7.png
这种布局对于IE6和IE8非常适用,但有时一页可能会"隐藏"应该在"主要内容"区域中显示的内容.
页面完成加载就好了.一瞬间IE7将渲染主要内容就好了,然后它会立即将其隐藏在视图中...某处...当有足够的内容强制"主要内容"区域时,它似乎只会遇到此问题滚动.
通过调整窗口大小或切换到另一个打开的选项卡再返回将导致IE7按预期显示页面.
请注意,兼容模式下IE8会出现同样的问题,但在IE8模式下页面会正确呈现.
如果需要,我可以附加我使用的基本CSS样式,但我首先想看看这是否是IE7的已知问题.
IE7是否存在定位布局和溢出滚动的问题,有时会忘记完全正确渲染页面,直到某些窗口重绘事件强制完成渲染?
请记住,这个完全相同的布局用于站点中的多个页面,因为它是在母版页中设置的.它只是(在这种情况下)一个页面遇到了这个问题.
具有完全相同布局的其他页面可以正确呈现.即使主要内容足够滚动也是如此.
最新更新:添加示例母版页和CSS
请注意,相同的布局对于应用程序中的所有页面都是相同的.IE7的问题只发生在一个这样的页面上.所有其他页面都可以在IE7中正确呈现.只有一个页面使用完全相同的布局,它有时会隐藏"工作空间"div中的内容.
母版页
<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="shared_templates_MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link rel="Stylesheet" type="text/css" href="~/common/yui/2.7.0/build/reset-fonts/reset-fonts.css" runat="server" />
<link rel="Stylesheet" type="text/css" href="~/shared/css/layout.css" runat="server" />
<asp:ContentPlaceHolder ID="head" runat="server" />
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div id="app-header">
</div>
<div id="side-panel">
</div>
<div id="work-space">
<asp:ContentPlaceHolder ID="WorkSpaceContentPlaceHolder" runat="server" />
</div> …
Run Code Online (Sandbox Code Playgroud) 在C#中,我使用XML/XSLT转换来将标记与数据隔离开来.Objective C中的等价物是什么?
$(document).onload()
Run Code Online (Sandbox Code Playgroud)
它由window.onload事件在内部实现
那怎么样?
$(document).ready()
Run Code Online (Sandbox Code Playgroud)
什么是本机JavaScript实现它?
我正在尝试为Java应用程序创建Web用户界面.用户界面非常简单,包括一个页面,其中包含一个供用户提出查询的表单,以及一个结果页面 - 有点像Google的搜索引擎或Ask.com.
我对Java的基本API非常熟悉,但是我没有太多使用Java进行Web环境的经验(尽管我使用过ASP.NET),所以我正在寻找一些建议:
我应该使用什么Web应用程序服务器?请注意,我的界面非常轻,我只想要一些快速,易于启动/重置/停止和(重新)部署我的应用程序的东西.此外,我需要它在多种环境中工作,即GNU/Linux,Mac OS X和Windows XP/Vista.此外,我使用的ant
和Eclipse
,所以这将是巨大的,如果我可以轻松地添加一些ant
目标服务器的管理,和/或使用IDE管理服务器.我已经研究过Tomcat和Jetty,后者看起来非常轻巧,易于安装和部署.这是理想的,因为GUI仅用于演示目的,我可能需要将其部署在不同的计算机中.然而,Tomcat已经存在了很长时间,而且似乎更成熟.
至于网页,Java Server Pages看起来很合适,因为它们看起来非常简单,我正在努力完成(处理表单并输出结果),但我很满意建议.
Engine
,它有一个方法run(String)
,它将处理用户的输入并返回结果显示.这个类是应用程序的核心.现在,我只想将这个类实例化一次,因为它需要大量内存,并且需要很长时间才能启动,所以我想在应用程序/服务器启动时创建它,并存储该引用应用程序的整个范围(即,直到我停止服务器).然后,对于每个用户请求,我只需调用实例的run
方法Engine
,并显示其结果.如何用Java实现这一目标?我使用SQL Inject Me Firefox插件扫描了我的登录脚本
根据测试结果,我的脚本很容易受到SQL注入攻击.以结果为例
Results:
Server Status Code: 302 Found
Tested value: 1' OR '1'='1
Server Status Code: 302 Found
Tested value: 1' OR '1'='1
Server Status Code: 302 Found
Tested value: 1 UNI/**/ON SELECT ALL FROM WHERE
Server Status Code: 302 Found
Tested value: %31%27%20%4F%52%20%27%31%27%3D%27%31
Run Code Online (Sandbox Code Playgroud)
我的剧本
check-login.php - 检查登录详细信息,这是代码.
$ email = clean($ _ POST ['username']); $ pass = clean($ _ POST ['password']); $ user ="select*from tbl_admin where admin ='$ email'and pass ='$ pass'";
//一些代码
$ _SESSION ['login_mes'] …
在MediaPlayer.create方法中,可以使用到Raw文件的id但是如何在setDataSource方法中使用它?
当我使用JavaScript将#从基数10转换为16进制16时,它不会填充数字.
例如:
var myBaseTenNumber = 0;
myBaseTenNumber.toString(16); // should be 00 but it's just 0
Run Code Online (Sandbox Code Playgroud)
任何简单的方法将我的号码填零为2位数?
我想用jQuery向body标签添加一个类.
例如,如果URL是http://www.mywebsite.com/about_us.asp,我想在body标签中添加前五个字母,在本例中为"about":
<body class="about">
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
javascript ×3
jquery ×2
objective-c ×2
accessor ×1
android ×1
asp.net ×1
cocoa ×1
cocoa-touch ×1
dealloc ×1
focus ×1
iphone ×1
java ×1
jetty ×1
jsp ×1
mysql ×1
php ×1
properties ×1
quirks-mode ×1
rendering ×1
tomcat ×1